3
3
# checkout (outside the Docker container running hadolint). We copy
4
4
# problem-matcher.json to the home folder.
5
5
6
+ # unset certain env vars to empty values
7
+ RESULTS=' '
8
+ # shellcheck disable=SC2034
9
+ HADOLINT_RESULTS=' '
10
+
11
+ # disable cheks for undefined env vars, in here mostly githu env vars
12
+ # shellcheck disable=SC2154
13
+
14
+ if [[ -n " ${HADOLINT_WORKING_DIRECTORY} " ]]; then
15
+ cd " ${HADOLINT_WORKING_DIRECTORY} " \
16
+ || { echo " Error: failed to change path to ${HADOLINT_WORKING_DIRECTORY} , check if exists, if is a directory directory permissions etc" ; exit 1; }
17
+ fi
18
+
6
19
PROBLEM_MATCHER_FILE=" /problem-matcher.json"
7
- if [ -f " $PROBLEM_MATCHER_FILE " ]; then
8
- cp " $PROBLEM_MATCHER_FILE " " $HOME /"
20
+ if [[ -f " ${ PROBLEM_MATCHER_FILE} " ] ]; then
21
+ cp " ${ PROBLEM_MATCHER_FILE} " " ${ HOME} /"
9
22
fi
10
23
# After the run has finished we remove the problem-matcher.json from
11
24
# the repository so we don't leave the checkout dirty. We also remove
@@ -16,52 +29,73 @@ cleanup() {
16
29
}
17
30
trap cleanup EXIT
18
31
19
- echo " ::add-matcher::$HOME /problem-matcher.json"
32
+ echo " ::add-matcher::${ HOME} /problem-matcher.json"
20
33
21
- if [ -n " $HADOLINT_CONFIG " ]; then
34
+ if [[ -n " ${ HADOLINT_CONFIG} " ] ]; then
22
35
HADOLINT_CONFIG=" -c ${HADOLINT_CONFIG} "
23
36
fi
24
37
25
- if [ -z " $HADOLINT_TRUSTED_REGISTRIES " ]; then
38
+ if [[ -z " ${ HADOLINT_TRUSTED_REGISTRIES} " ] ]; then
26
39
unset HADOLINT_TRUSTED_REGISTRIES
27
40
fi
28
41
29
- COMMAND=" hadolint $HADOLINT_CONFIG "
42
+ COMMAND=" hadolint ${ HADOLINT_CONFIG} "
30
43
31
- if [ " $HADOLINT_RECURSIVE " = " true" ]; then
44
+ if [[ " ${ HADOLINT_RECURSIVE} " = " true" ] ]; then
32
45
shopt -s globstar
33
-
34
46
filename=" ${!# } "
35
47
flags=" ${*: 1: $# -1} "
36
48
37
- RESULTS=$( eval " $COMMAND $flags " -- ** /" $filename " )
49
+ files_found=false
50
+ # try to find files to scan but do not end with eror if no files found
51
+ # notice that $filename can contain glob char so we add exception here
52
+ # shellcheck disable=SC2231
53
+ for file in ** /${filename}
54
+ do
55
+ if [[ -e " ${file} " ]]
56
+ then
57
+ files_found=true
58
+ break
59
+ fi
60
+ done
61
+
62
+ if [[ " ${files_found} " = " true" ]]; then
63
+ # notice that $filename can contain glob char so we add exception here
64
+ # shellcheck disable=SC2086,SC2231,SC2248
65
+ RESULTS=$( eval " ${COMMAND} ${flags} " -- ** /${filename} )
66
+ else
67
+ RESULTS=' '
68
+ echo " No Dockerfiles detected, skipping processing" ;
69
+ fi
70
+
38
71
else
39
72
flags=$*
40
- RESULTS=$( eval " $COMMAND " " $flags " )
73
+ RESULTS=$( eval " ${ COMMAND} " " ${ flags} " )
41
74
fi
42
75
FAILED=$?
43
76
44
- if [ -n " $HADOLINT_OUTPUT " ]; then
45
- if [ -f " $HADOLINT_OUTPUT " ]; then
46
- HADOLINT_OUTPUT=" $TMP_FOLDER / $ HADOLINT_OUTPUT"
77
+ if [[ -n " ${ HADOLINT_OUTPUT} " ] ]; then
78
+ if [[ -f " ${ HADOLINT_OUTPUT} " ] ]; then
79
+ HADOLINT_OUTPUT=" ${ TMP_FOLDER} / ${ HADOLINT_OUTPUT} "
47
80
fi
48
- echo " $RESULTS " > " $HADOLINT_OUTPUT "
81
+ echo " ${ RESULTS} " > " ${ HADOLINT_OUTPUT} "
49
82
fi
50
83
51
84
RESULTS=" ${RESULTS// $' \\ n' / ' ' } "
52
85
53
86
{
54
87
echo " results<<EOF"
55
- echo " $RESULTS "
88
+ echo " ${ RESULTS} "
56
89
echo " EOF"
57
- } >> " $GITHUB_OUTPUT "
90
+ } >> " ${ GITHUB_OUTPUT} "
58
91
59
92
{
60
93
echo " HADOLINT_RESULTS<<EOF"
61
- echo " $RESULTS "
94
+ echo " ${ RESULTS} "
62
95
echo " EOF"
63
- } >> " $GITHUB_ENV "
96
+ } >> " ${ GITHUB_ENV} "
64
97
65
- [ -z " $HADOLINT_OUTPUT " ] || echo " Hadolint output saved to: $HADOLINT_OUTPUT "
98
+ [[ -z " ${ HADOLINT_OUTPUT} " ]] || echo " Hadolint output saved to: ${ HADOLINT_OUTPUT} "
66
99
67
- exit $FAILED
100
+ # shellcheck disable=SC2248
101
+ exit ${FAILED}
0 commit comments