11#! /bin/bash
22
3- PROJECT_DIR= " /project "
3+ shopt -s globstar
44
5- echo " ARGS: "
5+ PROJECT_DIR= " /project "
66
77# First arg
88ARGS=" $1 "
99
10- echo $ARGS
11-
1210# First arg is json {typescript: boolean, fix: boolean, files: string[]}
1311TYPESCRIPT=$( echo $ARGS | jq -r ' .typescript' )
1412
1513# Get boolean value of fix
1614FIX=$( echo $ARGS | jq -r ' .fix' )
1715
18- # If files key is not present, just use .
16+ # If files key is not present, just use glob
1917
2018if [ $( echo $ARGS | jq -r ' .files' ) == ' null' ]; then
21- FILES=" ."
19+ # Glob for js, ts, tsx, jsx files
20+ FILES=$( fd -e js -e ts -e tsx -e jsx)
2221else
2322 FILES=$( echo $ARGS | jq -r ' .files[]' )
2423fi
2524
26- echo " Running StandardJS..."
2725
2826# If typescript is false, run standard
2927if [ $TYPESCRIPT == ' false' ]; then
28+ echo " Running standard"
3029 $LINT_ARGS =" $FILES "
3130 # If FIX
3231 if [ $FIX == " true" ]; then
3938
4039echo " Running ts-standard..."
4140
42- TS_FILES=$( echo $FILES | grep -E " \.ts$|\.tsx$" )
43-
44- # Make sure all $TS_FILES start with $PROJECT_DIR, or add it
45- for TS_FILE in $TS_FILES ; do
46- if [[ ! $TS_FILE == $PROJECT_DIR * ]]; then
47- # Escape / in filenames
48- TS_FILE_ESCAPED=$( echo $TS_FILE | sed ' s/\//\\\//g' )
49- PROJECT_DIR_ESCAPED=$( echo $PROJECT_DIR | sed ' s/\//\\\//g' )
50- TS_FILES=$( echo $TS_FILES | sed -e " s/$TS_FILE_ESCAPED /$PROJECT_DIR_ESCAPED \/$TS_FILE_ESCAPED /g" )
51- fi
52- done
41+ TS_FILES=$( echo " $FILES " | grep -E " \.ts$|\.tsx$" )
5342
5443TS_ROOTS=$( fd -d 3 tsconfig.json)
5544
5645# If no node roots found
5746if [ -z " $TS_ROOTS " ]; then
58- echo " No Typescript configs found in project"
47+ echo " No Typescript configs found in project. Exiting. "
5948 exit 0
6049fi
6150
6251TS_OUTPUT=" "
6352EXIT_CODE=0
6453
54+ PROJECT_DIR=$( pwd)
55+
6556# Run ts-standard in each node root
6657for TS_ROOT in $TS_ROOTS ; do
67- TS_ROOT=" $PROJECT_DIR /$TS_ROOT "
6858 root_dirname=$( dirname $TS_ROOT )
6959 cd $root_dirname
7060 # Filter all TS_FILES in root_dirname
71- TS_FILES_IN_ROOT=$( echo $TS_FILES | grep $root_dirname )
72-
61+ TS_FILES_IN_ROOT=$( echo " $TS_FILES " | grep -E $root_dirname )
62+ echo " Linting TS Files in $root_dirname "
7363 # If no TS_FILES in root_dirname, skip
7464 if [ -z " $TS_FILES_IN_ROOT " ]; then
7565 continue
@@ -86,6 +76,7 @@ for TS_ROOT in $TS_ROOTS; do
8676 if [ $? -ne 0 ] && [ $EXIT_CODE -eq 0 ]; then
8777 EXIT_CODE=$?
8878 fi
79+ cd $PROJECT_DIR
8980done
9081
9182echo $TS_OUTPUT
0 commit comments