atcheck/lsscanner/new_ubuntu/node_modules_win/node-datetime/lint.sh

167 lines
3.1 KiB
Bash
Executable File

#!/bin/sh
###################
# variables
###################
# You can customize the jshint location using the JSHINT variable.
# e.g. JSHINT=./node_modules/.bin/jshint scripts/lint/lint.sh
# if you want to use a local version of jshint.
if [ -z "$JSHINT" ]; then
JSHINT="jshint"
fi
name="node-datetime";
cwd=`pwd`;
# list directories/files to lint
list=();
defaultDirList="index.js src/";
# optional space separated list of directories/files to lint
# Example: ./lint.sh "mydir/ myFile" > this will lint all files in mydir/ and lint myFile
dirList=$1;
##################
# functions
##################
indexOf() {
pos="${1%%$2*}";
[[ $pos = $1 ]] && echo -1 || echo ${#pos};
}
echoGreen() {
echo -en '\E[32m'"\033[1m`checkMark` $1\033[0m\n\r";
}
echoYellow() {
echo -en '\E[33m'"\033[1m$1\033[0m\n\r";
}
echoBlue() {
echo -en '\E[34m'"\033[1m`mark` $1\033[0m\n\r";
}
echoRed() {
echo -en '\E[31m'"\033[1m`errorMark` $1\033[0m\n\r";
}
arrowMark() {
echo -e "\xe2\x86\x92";
}
checkMark() {
echo -e "\xE2\x9C\x93";
}
errorMark() {
echo -e "\xC7\x83";
}
mark() {
echo -e "\xCB\x83 ";
}
# probably pointless...
lintTreeObj() {
# lint the code to be commited
if git rev-parse --verify HEAD >/dev/null 2>&1
then
against=HEAD;
else
# Initial commit: diff against an empty tree object
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904;
fi
toBeCommited=$(git diff --cached --name-only --diff-filter=ACM | grep ".js$");
echoBlue "linting added files...";
# lint JavaScript files only
for file in ${toBeCommited}; do
echo "linting $path$file";
failed=`$JSHINT "$path$file"`;
if [ "$failed" ]; then
echoRed "[error] line error(s) in $1";
echoRed "$failed";
exit 1;
else
echoGreen "Passed [OK]";
fi
done
}
lint() {
# lint the code in the specified directories (this may not include added files to git)
targetPath="$path$1";
if [ -d "$targetPath" ] || [ -f "$targetPath" ]; then
echo "linting $targetPath";
failed=`$JSHINT "$targetPath"`;
if [ "$failed" ]; then
echoRed "[error] lint error(s) in $1";
echoRed "$failed";
exit 1;
else
echoGreen "Passed [OK]";
fi
else
echoRed "[error] $targetPath";
echoRed "No such file or directory ($targetPath)";
exit 1;
fi
}
##########################
# procedural codes
##########################
# test if jshtin command is avialable
if ! type "$JSHINT" > /dev/null; then
echoRed "[error] jshint command is not available";
exit 1;
fi
# find root path
index=`indexOf "$cwd" "$name"`;
if [ "$index" -ne -1 ]; then
path=`expr substr $cwd 1 $index`"$name/";
else
path="./";
fi
echoBlue "Current working directory: $cwd";
echoBlue "Root path: $path";
# find directories/files to lint
if [ "$dirList" ]; then
list=($dirList);
else
list=($defaultDirList);
fi
echoYellow "directories/files to lint:";
for item in "${list[@]}"; do
echoBlue "${item}";
done
# start linting
echoYellow "Executing jshint...";
# lint the files in git tree
#lintTreeObj "";
echoBlue "lint files in specified directories...";
# lint
for item in "${list[@]}"; do
lint "${item}";
done
echoYellow "Done";
exit 0;