From 592e305da041c09a009afa4a43c97d889bed65c3 Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Thu, 28 Dec 2023 19:31:51 -0700 Subject: [PATCH] chore: update entrypoint.sh (#357) --- entrypoint.sh | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 6d15487..f580faa 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -39,17 +39,26 @@ fi CHANGED_FILES="" -# Function to concatenate non-empty strings with a separator +# Function to concatenate non-empty file names with a separator concatenate() { local separator=$1 shift local result="" - for str in "$@"; do - if [[ -n $str ]]; then + for filename in "$@"; do + if [[ "$INPUT_SAFE_OUTPUT" == "true" ]]; then + filename=${filename//$/\\$} # Replace $ with \$ + filename=${filename//\(/\\\(} # Replace ( with \( + filename=${filename//\)/\\\)} # Replace ) with \) + filename=${filename//\`/\\\`} # Replace ` with \` + filename=${filename//|/\\|} # Replace | with \| + filename=${filename//&/\\&} # Replace & with \& + filename=${filename//;/\\;} # Replace ; with \; + fi + if [[ -n $filename ]]; then if [[ -n $result ]]; then - result+="$separator$str" + result+="$separator$filename" else - result="$str" + result="$filename" fi fi done @@ -62,20 +71,10 @@ CHANGED_FILES=$(concatenate "|" "$TRACKED_FILES" "$UNTRACKED_OR_IGNORED_FILES" " 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}') if [[ -n "$CHANGED_FILES" ]]; then - echo "Found uncommited changes" + echo "Found uncommitted changes" 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}') - if [[ "$INPUT_SAFE_OUTPUT" == "true" ]]; then - CHANGED_FILES=${CHANGED_FILES//$/\\$} # Replace $ with \$ - CHANGED_FILES=${CHANGED_FILES//\(/\\\(}} # Replace ( with \( - CHANGED_FILES=${CHANGED_FILES//\)/\\\)}} # Replace ) with \) - CHANGED_FILES=${CHANGED_FILES//\`/\\\`} # Replace ` with \` - CHANGED_FILES=${CHANGED_FILES//|/\\|} # Replace | with \| - CHANGED_FILES=${CHANGED_FILES//&/\\&} # Replace & with \& - CHANGED_FILES=${CHANGED_FILES//;/\\;} # Replace ; with \; - fi - echo "files_changed=true" >> "$GITHUB_OUTPUT" echo "changed_files=$CHANGED_FILES" >> "$GITHUB_OUTPUT" @@ -85,7 +84,6 @@ if [[ -n "$CHANGED_FILES" ]]; then fi exit 1 fi - else echo "No changes found." echo "files_changed=false" >> "$GITHUB_OUTPUT"