1
1
#! /bin/bash
2
2
3
- PROJECT_DIR= " /project "
3
+ shopt -s globstar
4
4
5
- echo " ARGS: "
5
+ PROJECT_DIR= " /project "
6
6
7
7
# First arg
8
8
ARGS=" $1 "
9
9
10
- echo $ARGS
11
-
12
10
# First arg is json {typescript: boolean, fix: boolean, files: string[]}
13
11
TYPESCRIPT=$( echo $ARGS | jq -r ' .typescript' )
14
12
15
13
# Get boolean value of fix
16
14
FIX=$( echo $ARGS | jq -r ' .fix' )
17
15
18
- # If files key is not present, just use .
16
+ # If files key is not present, just use glob
19
17
20
18
if [ $( 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)
22
21
else
23
22
FILES=$( echo $ARGS | jq -r ' .files[]' )
24
23
fi
25
24
26
- echo " Running StandardJS..."
27
25
28
26
# If typescript is false, run standard
29
27
if [ $TYPESCRIPT == ' false' ]; then
28
+ echo " Running standard"
30
29
$LINT_ARGS =" $FILES "
31
30
# If FIX
32
31
if [ $FIX == " true" ]; then
39
38
40
39
echo " Running ts-standard..."
41
40
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$" )
53
42
54
43
TS_ROOTS=$( fd -d 3 tsconfig.json)
55
44
56
45
# If no node roots found
57
46
if [ -z " $TS_ROOTS " ]; then
58
- echo " No Typescript configs found in project"
47
+ echo " No Typescript configs found in project. Exiting. "
59
48
exit 0
60
49
fi
61
50
62
51
TS_OUTPUT=" "
63
52
EXIT_CODE=0
64
53
54
+ PROJECT_DIR=$( pwd)
55
+
65
56
# Run ts-standard in each node root
66
57
for TS_ROOT in $TS_ROOTS ; do
67
- TS_ROOT=" $PROJECT_DIR /$TS_ROOT "
68
58
root_dirname=$( dirname $TS_ROOT )
69
59
cd $root_dirname
70
60
# 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 "
73
63
# If no TS_FILES in root_dirname, skip
74
64
if [ -z " $TS_FILES_IN_ROOT " ]; then
75
65
continue
@@ -86,6 +76,7 @@ for TS_ROOT in $TS_ROOTS; do
86
76
if [ $? -ne 0 ] && [ $EXIT_CODE -eq 0 ]; then
87
77
EXIT_CODE=$?
88
78
fi
79
+ cd $PROJECT_DIR
89
80
done
90
81
91
82
echo $TS_OUTPUT
0 commit comments