mirror of https://github.com/lukechilds/node.git
Browse Source
As it is, check-install.sh does not show more helpful error messages, and supporting various shells could be a problem. This patch rewrites the same in Python. This patch also enables check-imports.py in the linting process PR-URL: https://github.com/nodejs/node/pull/6105 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>v6.x
Sakthipriyan Vairamani
9 years ago
committed by
James M Snell
3 changed files with 43 additions and 36 deletions
@ -0,0 +1,42 @@ |
|||
#!/usr/bin/env python |
|||
|
|||
from __future__ import print_function |
|||
import glob |
|||
import re |
|||
import sys |
|||
|
|||
|
|||
def do_exist(file_name, lines, imported): |
|||
if not any(not re.match('using \w+::{0};'.format(imported), line) and |
|||
re.search(imported, line) for line in lines): |
|||
print('File "{0}" does not use "{1}"'.format(file_name, imported)) |
|||
return False |
|||
return True |
|||
|
|||
|
|||
def is_valid(file_name): |
|||
with open(file_name) as source_file: |
|||
lines = [line.strip() for line in source_file] |
|||
|
|||
usings, importeds, line_numbers, valid = [], [], [], True |
|||
for idx, line in enumerate(lines, 1): |
|||
matches = re.search(r'^using (\w+::(\w+));$', line) |
|||
if matches: |
|||
line_numbers.append(idx) |
|||
usings.append(matches.group(1)) |
|||
importeds.append(matches.group(2)) |
|||
|
|||
valid = all([do_exist(file_name, lines, imported) for imported in importeds]) |
|||
|
|||
sorted_usings = sorted(usings, key=lambda x: x.lower()) |
|||
if sorted_usings != usings: |
|||
print("using statements aren't sorted in '{0}'.".format(file_name)) |
|||
for num, actual, expected in zip(line_numbers, usings, sorted_usings): |
|||
if actual != expected: |
|||
print('\tLine {0}: Actual: {1}, Expected: {2}' |
|||
.format(num, actual, expected)) |
|||
return False |
|||
else: |
|||
return valid |
|||
|
|||
sys.exit(0 if all(map(is_valid, glob.iglob('src/*.cc'))) else 1) |
@ -1,36 +0,0 @@ |
|||
#!/bin/sh |
|||
|
|||
# Copyright (c) 2013, 2014, Ben Noordhuis <info@bnoordhuis.nl> |
|||
# |
|||
# Permission to use, copy, modify, and/or distribute this software for any |
|||
# purpose with or without fee is hereby granted, provided that the above |
|||
# copyright notice and this permission notice appear in all copies. |
|||
# |
|||
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
|||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
|||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
|||
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
|||
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
|||
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
|||
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
|||
|
|||
SED=sed |
|||
UNAME=`uname` |
|||
|
|||
if [ "$UNAME" = Darwin ] || [ "$UNAME" = FreeBSD ]; then |
|||
SED=gsed |
|||
fi |
|||
|
|||
cd `dirname "$0"`/../ |
|||
|
|||
for FILE in src/*.cc; do |
|||
$SED -rne 's/^using (\w+::\w+);$/\1/p' $FILE | sort -c || echo "in $FILE" |
|||
done |
|||
|
|||
for FILE in src/*.cc; do |
|||
for IMPORT in `$SED -rne 's/^using (\w+)::(\w+);$/\2/p' $FILE`; do |
|||
if ! $SED -re '/^using (\w+)::(\w+);$/d' $FILE | grep -q "$IMPORT"; then |
|||
echo "$IMPORT unused in $FILE" |
|||
fi |
|||
done |
|||
done |
Loading…
Reference in new issue