3939
4040CHANGED_FILES=" "
4141
42- # Function to concatenate non-empty strings with a separator
42+ # Function to concatenate non-empty file names with a separator
4343concatenate () {
4444 local separator=$1
4545 shift
4646 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
4958 if [[ -n $result ]]; then
50- result+=" $separator$str "
59+ result+=" $separator$filename "
5160 else
52- result=" $str "
61+ result=" $filename "
5362 fi
5463 fi
5564 done
@@ -62,20 +71,10 @@ CHANGED_FILES=$(concatenate "|" "$TRACKED_FILES" "$UNTRACKED_OR_IGNORED_FILES" "
6271CHANGED_FILES=$( echo " $CHANGED_FILES " | awk ' {gsub(/\|/,"\n"); print $0;}' | sort -u | awk -v d=" |" ' {s=(NR==1?s:s d)$0}END{print s}' )
6372
6473if [[ -n " $CHANGED_FILES " ]]; then
65- echo " Found uncommited changes"
74+ echo " Found uncommitted changes"
6675
6776 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}' )
6877
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-
7978 echo " files_changed=true" >> " $GITHUB_OUTPUT "
8079 echo " changed_files=$CHANGED_FILES " >> " $GITHUB_OUTPUT "
8180
@@ -85,7 +84,6 @@ if [[ -n "$CHANGED_FILES" ]]; then
8584 fi
8685 exit 1
8786 fi
88-
8987else
9088 echo " No changes found."
9189 echo " files_changed=false" >> " $GITHUB_OUTPUT "
0 commit comments