@@ -12,22 +12,30 @@ log() {
12
12
echo " $CLI_PREFIX $1 "
13
13
}
14
14
15
+ SH_FILES=" "
15
16
MARKDOWN_FILES=" "
16
17
TJSX_FILES=" "
17
- JSON_YML_FILES=" "
18
+ JSON_FILES=" "
19
+ YAML_FILES=" "
18
20
HTML_FILES=" "
19
21
CSS_FILES=" "
20
22
21
23
for file in $( git diff --name-only --cached --diff-filter=ACMR) ; do
22
24
case " $file " in
25
+ * .sh | * .bash)
26
+ SH_FILES=" $SH_FILES $file "
27
+ ;;
23
28
* .md)
24
29
MARKDOWN_FILES=" $MARKDOWN_FILES $file "
25
30
;;
26
31
* .js | * .jsx | * .ts | * .tsx)
27
32
TJSX_FILES=" $TJSX_FILES $file "
28
33
;;
29
- * .json | * .yml | * .yaml)
30
- JSON_YML_FILES=" $JSON_YML_FILES $file "
34
+ * .json)
35
+ JSON_FILES=" $JSON_FILES $file "
36
+ ;;
37
+ * .yml | * .yaml)
38
+ YAML_FILES=" $YAML_FILES $file "
31
39
;;
32
40
* .html)
33
41
HTML_FILES=" $HTML_FILES $file "
@@ -38,24 +46,43 @@ for file in $(git diff --name-only --cached --diff-filter=ACMR); do
38
46
esac
39
47
done
40
48
49
+ SH_FILES=$( echo " $SH_FILES " | awk ' {$1=$1}1' )
41
50
MARKDOWN_FILES=$( echo " $MARKDOWN_FILES " | awk ' {$1=$1}1' )
42
51
TJSX_FILES=$( echo " $TJSX_FILES " | awk ' {$1=$1}1' )
52
+ JSON_FILES=$( echo " $JSON_FILES " | awk ' {$1=$1}1' )
53
+ YAML_FILES=$( echo " $YAML_FILES " | awk ' {$1=$1}1' )
43
54
HTML_FILES=$( echo " $HTML_FILES " | awk ' {$1=$1}1' )
44
55
CSS_FILES=$( echo " $CSS_FILES " | awk ' {$1=$1}1' )
45
56
57
+ # Shell files
58
+ if [ ${# SH_FILES} -gt 1 ]; then
59
+ log " Shell linting started"
60
+ if [ " $( command -v shellcheck) " ]; then
61
+ log " Markdown [dprint] linting..."
62
+ # shellcheck disable=SC2086
63
+ shellcheck ${SH_FILES}
64
+ log " Markdown [dprint] linting done"
65
+ else
66
+ log " dprint binary and/or configuration are not installed"
67
+ fi
68
+ log " Markdown linting done\n"
69
+ fi
70
+
46
71
# Markdown files
47
72
if [ ${# MARKDOWN_FILES} -gt 1 ]; then
48
73
log " Markdown linting started"
49
74
if [ " $( command -v dprint) " ] && [ -f " ./dprint.json" ]; then
50
75
log " Markdown [dprint] linting..."
51
- dprint check --log-level=warn " ${MARKDOWN_FILES} "
76
+ # shellcheck disable=SC2086
77
+ dprint check --log-level=warn ${MARKDOWN_FILES}
52
78
log " Markdown [dprint] linting done"
53
79
else
54
80
log " dprint binary and/or configuration are not installed"
55
81
fi
56
82
if [ " $( command -v markdownlint) " ]; then
57
83
log " Markdown [markdownlint] linting..."
58
- markdownlint " ${MARKDOWN_FILES} "
84
+ # shellcheck disable=SC2086
85
+ markdownlint ${MARKDOWN_FILES}
59
86
log " Markdown [markdownlint] done..."
60
87
else
61
88
log " markdownlint binary is not installed"
@@ -68,38 +95,63 @@ if [ ${#TJSX_FILES} -gt 1 ]; then
68
95
log " JS(X)/TS(X) linting started"
69
96
if [ " $( command -v biome) " ] && [ -f " ./biome.json" ]; then
70
97
log " JS(X)/TS(X) [biome] linting..."
71
- biome check --diagnostic-level=warn " ${TJSX_FILES} "
98
+ # shellcheck disable=SC2086
99
+ biome check --diagnostic-level=warn ${TJSX_FILES}
72
100
log " JS(X)/TS(X) [biome] linting done"
73
101
else
74
102
log " biome binary and/or configuration are not installed"
75
103
fi
76
104
log " JS(X)/TS(X) linting done\n"
77
105
fi
78
106
79
- # json/yaml
80
- if [ ${# JSON_YML_FILES} -gt 1 ]; then
81
- log " JSON/YAML linting started"
107
+ # json
108
+ if [ ${# JSON_FILES} -gt 1 ]; then
109
+ log " JSON linting started"
110
+ if [ " $( command -v jsona) " ]; then
111
+ log " JSON [jsona] linting..."
112
+ # shellcheck disable=SC2086
113
+ jsona fmt --option trailing_newline=true --check ${JSON_FILES}
114
+ log " JSON [jsona] linting done"
115
+ elif [ " $( command -v spectral) " ]; then
116
+ if [ -f " ./.spectral.yaml" ] || [ -f " ./.spectral.yml" ]; then
117
+ log " JSON [spectral] linting..."
118
+ # shellcheck disable=SC2086
119
+ spectral lint --ignore-unknown-format ${JSON_FILES}
120
+ log " JSON [spectral] linting done"
121
+ else
122
+ log " JSON [spectral] config not found"
123
+ fi
124
+ else
125
+ log " spectral-lint binary is not installed"
126
+ fi
127
+ log " JSON linting done\n"
128
+ fi
129
+
130
+ # yaml
131
+ if [ ${# YAML_FILES} -gt 1 ]; then
132
+ log " YAML linting started"
82
133
if [ " $( command -v spectral) " ]; then
83
- log " JSON/YAML [ spectral] linting... "
84
- spectral lint --ignore-unknown-format " ${JSON_YML_FILES} "
85
- log " JSON/YAML [spectral] linting done "
86
- elif [ " $( command -v jsonymllint ) " ] ; then
87
- log " JSON/ YAML [jsonyamllint ] linting... "
88
- log " spectral-lint binary is not installed, but we use jsonymllint "
89
- jsonymllint " ${JSON_YML_FILES} "
90
- log " JSON/YAML [jsonyamllint] linting done "
134
+ if [ -f " ./. spectral.yaml " ] || [ -f " ./.spectral.yml " ] ; then
135
+ log " YAML [spectral] linting... "
136
+ # shellcheck disable=SC2086
137
+ spectral lint --ignore-unknown-format ${YAML_FILES}
138
+ log " YAML [spectral ] linting done "
139
+ else
140
+ log " YAML [spectral] config not found "
141
+ fi
91
142
else
92
- log " spectral-lint and jsonymllint binaries is not installed"
143
+ log " spectral-lint binary is not installed"
93
144
fi
94
- log " JSON/ YAML linting done\n"
145
+ log " YAML linting done\n"
95
146
fi
96
147
97
148
# html
98
149
if [ ${# HTML_FILES} -gt 1 ]; then
99
150
log " HTML linting started"
100
151
if [ " $( command -v htmllint) " ]; then
101
152
log " HTML [htmllint] linting..."
102
- htmllint " ${HTML_FILES} "
153
+ # shellcheck disable=SC2086
154
+ htmllint ${HTML_FILES}
103
155
log " HTML [htmllint] linting done"
104
156
else
105
157
log " htmlhint binary is not installed"
@@ -112,20 +164,23 @@ if [ ${#CSS_FILES} -gt 1 ]; then
112
164
log " CSS linting..."
113
165
if [ " $( command -v stylelint) " ]; then
114
166
log " CSS [stylelint] linting..."
115
- stylelint --color " ${CSS_FILES} "
167
+ # shellcheck disable=SC2086
168
+ stylelint --color ${CSS_FILES}
116
169
log " CSS [stylelint] linting done"
117
170
else
118
171
log " stylelint binary is not installed"
119
172
fi
120
173
log " CSS linting done\n"
121
174
fi
122
175
123
- PRETTIER_FILES=$( echo " ${MARKDOWN_FILES} ${TJSX_FILES} ${JSON_YML_FILES} ${HTML_FILES} ${CSS_FILES} " | awk ' {$1=$1}1' )
176
+ PRETTIER_FILES=$( echo " ${MARKDOWN_FILES} ${TJSX_FILES} ${JSON_FILES} ${YAML_FILES} ${HTML_FILES} ${CSS_FILES} " | awk ' {$1=$1}1' )
177
+
124
178
if [ ${# PRETTIER_FILES} -gt 4 ]; then
125
179
log " Prettier overall linting..."
126
180
if [ " $( command -v prettier) " ]; then
127
181
log " Prettier overall linting started"
128
- prettier -c " ${PRETTIER_FILES} "
182
+ # shellcheck disable=SC2086
183
+ prettier -c ${PRETTIER_FILES}
129
184
log " Prettier overall linting done\n"
130
185
fi
131
186
fi
0 commit comments