39
39
40
40
CHANGED_FILES=" "
41
41
42
- # Function to concatenate non-empty strings with a separator
42
+ # Function to concatenate non-empty file names with a separator
43
43
concatenate () {
44
44
local separator=$1
45
45
shift
46
46
local result=" "
47
- for str in " $@ " ; do
48
- if [[ -n $str ]]; then
47
+ for filename in " $@ " ; do
48
+ if [[ " $INPUT_SAFE_OUTPUT " == " true" ]]; then
49
+ filename=${filename// $/ \\ $} # Replace $ with \$
50
+ filename=${filename// \( / \\\( } # Replace ( with \(
51
+ filename=${filename// \) / \\\) } # Replace ) with \)
52
+ filename=${filename// \` / \\\` } # Replace ` with \`
53
+ filename=${filename// |/ \\ |} # Replace | with \|
54
+ filename=${filename// &/ \\ &} # Replace & with \&
55
+ filename=${filename// ;/ \\ ;} # Replace ; with \;
56
+ fi
57
+ if [[ -n $filename ]]; then
49
58
if [[ -n $result ]]; then
50
- result+=" $separator$str "
59
+ result+=" $separator$filename "
51
60
else
52
- result=" $str "
61
+ result=" $filename "
53
62
fi
54
63
fi
55
64
done
@@ -62,20 +71,10 @@ CHANGED_FILES=$(concatenate "|" "$TRACKED_FILES" "$UNTRACKED_OR_IGNORED_FILES" "
62
71
CHANGED_FILES=$( echo " $CHANGED_FILES " | awk ' {gsub(/\|/,"\n"); print $0;}' | sort -u | awk -v d=" |" ' {s=(NR==1?s:s d)$0}END{print s}' )
63
72
64
73
if [[ -n " $CHANGED_FILES " ]]; then
65
- echo " Found uncommited changes"
74
+ echo " Found uncommitted changes"
66
75
67
76
CHANGED_FILES=$( echo " $CHANGED_FILES " | awk ' {gsub(/\|/,"\n"); print $0;}' | awk -v d=" $INPUT_SEPARATOR " ' {s=(NR==1?s:s d)$0}END{print s}' )
68
77
69
- if [[ " $INPUT_SAFE_OUTPUT " == " true" ]]; then
70
- CHANGED_FILES=${CHANGED_FILES// $/ \\ $} # Replace $ with \$
71
- CHANGED_FILES=${CHANGED_FILES// \( / \\\( } } # Replace ( with \(
72
- CHANGED_FILES=${CHANGED_FILES// \) / \\\) } } # Replace ) with \)
73
- CHANGED_FILES=${CHANGED_FILES// \` / \\\` } # Replace ` with \`
74
- CHANGED_FILES=${CHANGED_FILES// |/ \\ |} # Replace | with \|
75
- CHANGED_FILES=${CHANGED_FILES// &/ \\ &} # Replace & with \&
76
- CHANGED_FILES=${CHANGED_FILES// ;/ \\ ;} # Replace ; with \;
77
- fi
78
-
79
78
echo " files_changed=true" >> " $GITHUB_OUTPUT "
80
79
echo " changed_files=$CHANGED_FILES " >> " $GITHUB_OUTPUT "
81
80
@@ -85,7 +84,6 @@ if [[ -n "$CHANGED_FILES" ]]; then
85
84
fi
86
85
exit 1
87
86
fi
88
-
89
87
else
90
88
echo " No changes found."
91
89
echo " files_changed=false" >> " $GITHUB_OUTPUT "
0 commit comments