@@ -109,7 +109,20 @@ runs:
109109    - id : output_sha 
110110      if : ${{ !cancelled() }} 
111111      shell : bash 
112-       run : printf "sha=%s\n" $(git rev-parse --verify '${{ inputs.sha }}') >> "$GITHUB_OUTPUT" 
112+       run : | 
113+         set -e  # Exit immediately if any command fails 
114+         sha_input='${{ inputs.sha }}' 
115+         if [[ ! "$sha_input" =~ ^[0-9a-f]{40}$ ]]; then 
116+           # check if value is non-sha valid 
117+           output=$(git rev-parse --verify "$sha_input") 
118+           if [[ -n "$output" ]]; then 
119+             printf "::debug:: %s\n" "Valid branch name or sha provided: ${output}" ; 
120+           else 
121+             printf "::error title='Invalid':: %s\n" "Error: Invalid SHA format" >&2 ; 
122+             exit 1 ; 
123+           fi 
124+         fi ; 
125+         printf "sha=%s\n" $(git rev-parse --verify "$output") >> "$GITHUB_OUTPUT" ; 
113126id : output_uuid 
114127      if : ${{ !cancelled() && (inputs.check-id == '') }} 
115128      shell : bash 
@@ -152,16 +165,27 @@ runs:
152165      env :
153166        GH_TOKEN : ${{ inputs.token }} 
154167      run : | 
168+         printf "%s\n" "::group::validate-name" 
169+         name_input='${{ inputs.name }}' 
170+         sanitized_input_name=$(echo "$name_input" | tr -cd '[:alnum:] _') 
171+         printf "::debug:: %s\n" "Will use name $sanitized_input_name" ; 
172+         printf "%s\n" "::endgroup::" 
173+         printf "%s\n" "::group::validate-title" 
174+         title_input='${{ inputs.name }}' 
175+         sanitized_input_title=$(echo "$title_input" | tr -cd '[:alnum:] _') 
176+         printf "::debug:: %s\n" "Will use name $sanitized_input_title" ; 
177+         sanitized_input_title_field=$(printf "%s%s" 'output[title]=' "$sanitized_input_title_field" ;) 
178+         printf "%s\n" "::endgroup::" 
155179        printf "%s\n" "::group::create-new-check" 
156180        # GitHub CLI api 
157181        # https://cli.github.com/manual/gh_api 
158182        CHECK_ID=$(gh api --method POST -H "Accept: application/vnd.github+json" \ 
159183        /repos/reactive-firewall-org/multicast/check-runs \ 
160-         -f "name=${{ inputs.name }} " -f "head_sha=${{ steps.output_sha.outputs.sha }}" \ 
161-         -f " status=${{ inputs.status }}"  -f "external_id=${{ steps.output_uuid.outputs.uuid }}" \ 
184+         -f "name=$sanitized_input_name " -f "head_sha=${{ steps.output_sha.outputs.sha }}" \ 
185+         -f ' status=${{ inputs.status }}'  -f "external_id=${{ steps.output_uuid.outputs.uuid }}" \ 
162186        -f "started_at=${{ steps.output_date.outputs.check_date }}Z" \ 
163187        -f "details_url=${{ steps.output_check_details_url.outputs.details_url }}" \ 
164-         -f 'output[title]=${{ inputs.title }}'  \ 
188+         -f "$sanitized_input_title_field"  \ 
165189        -f 'output[summary]=' -f 'output[text]=' --jq '.id'); 
166190        printf "check_id=%s\n" "${CHECK_ID}" >> "$GITHUB_OUTPUT" 
167191        printf "%s\n" "::endgroup::" 
@@ -172,16 +196,27 @@ runs:
172196      env :
173197        GH_TOKEN : ${{ inputs.token }} 
174198      run : | 
199+         printf "%s\n" "::group::validate-name" 
200+         name_input='${{ inputs.name }}' 
201+         sanitized_input_name=$(echo "$name_input" | tr -cd '[:alnum:] _') 
202+         printf "::debug:: %s\n" "Will use name $sanitized_input_name" ; 
203+         printf "%s\n" "::endgroup::" 
204+         printf "%s\n" "::group::validate-title" 
205+         title_input='${{ inputs.name }}' 
206+         sanitized_input_title=$(echo "$title_input" | tr -cd '[:alnum:] _') 
207+         printf "::debug:: %s\n" "Will use name $sanitized_input_title" ; 
208+         sanitized_input_title_field=$(printf "%s%s" 'output[title]=' "$sanitized_input_title_field" ;) 
209+         printf "%s\n" "::endgroup::" 
175210        printf "%s\n" "::group::update-new-check" 
176211        # GitHub CLI api 
177212        # https://cli.github.com/manual/gh_api 
178213        CHECK_ID=$(gh api --method POST -H "Accept: application/vnd.github+json" \ 
179214        /repos/reactive-firewall-org/multicast/check-runs \ 
180-         -f "name=${{ inputs.name }} " -f "head_sha=${{ steps.output_sha.outputs.sha }}" \ 
215+         -f "name=$sanitized_input_name " -f "head_sha=${{ steps.output_sha.outputs.sha }}" \ 
181216        -f "status=in_progress" -f "external_id=${{ steps.output_uuid.outputs.uuid }}" \ 
182217        -f "started_at=${{ steps.output_date.outputs.check_date }}Z" \ 
183218        -f "details_url=${{ steps.output_check_details_url.outputs.details_url }}" \ 
184-         -f 'output[title]=${{ inputs.title }}'  \ 
219+         -f "$sanitized_input_title_field"  \ 
185220        -f 'output[summary]=Check is in progress.' -f 'output[text]=' --jq '.id'); 
186221        printf "check_id=%s\n" "${CHECK_ID}" >> "$GITHUB_OUTPUT" 
187222        printf "%s\n" "::endgroup::" 
@@ -216,15 +251,26 @@ runs:
216251      env :
217252        GH_TOKEN : ${{ inputs.token }} 
218253      run : | 
254+         printf "%s\n" "::group::validate-name" 
255+         name_input='${{ inputs.name }}' 
256+         sanitized_input_name=$(echo "$name_input" | tr -cd '[:alnum:] _') 
257+         printf "::debug:: %s\n" "Will use name $sanitized_input_name" ; 
258+         printf "%s\n" "::endgroup::" 
259+         printf "%s\n" "::group::validate-title" 
260+         title_input='${{ inputs.name }}' 
261+         sanitized_input_title=$(echo "$title_input" | tr -cd '[:alnum:] _') 
262+         printf "::debug:: %s\n" "Will use name $sanitized_input_title" ; 
263+         sanitized_input_title_field=$(printf "%s%s" 'output[title]=' "$sanitized_input_title_field" ;) 
264+         printf "%s\n" "::endgroup::" 
219265        printf "%s\n" "::group::update-check" 
220266        # GitHub CLI api 
221267        # https://cli.github.com/manual/gh_api 
222268        gh api --method PATCH -H "Accept: application/vnd.github+json" \ 
223269        /repos/reactive-firewall-org/multicast/check-runs/${{ steps.output_check_id.outputs.check_id }} \ 
224-         -f "name=${{ inputs.name }} " -f "head_sha=${{ steps.output_sha.outputs.sha }}" \ 
270+         -f "name=$sanitized_input_name " -f "head_sha=${{ steps.output_sha.outputs.sha }}" \ 
225271        -f "status=${{ inputs.status }}" \ 
226272        -f "details_url=${{ steps.output_check_details_url.outputs.details_url }}" \ 
227-         -f 'output[title]=${{ inputs.title }}'  \ 
273+         -f "$sanitized_input_title_field"  \ 
228274        -f 'output[summary]=${{ inputs.summary }}' -f 'output[text]=${{ inputs.text }}' 
229275        printf "%s\n" "::endgroup::" 
230276name : " Update Check" 
@@ -234,16 +280,27 @@ runs:
234280      env :
235281        GH_TOKEN : ${{ inputs.token }} 
236282      run : | 
283+         printf "%s\n" "::group::validate-name" 
284+         name_input='${{ inputs.name }}' 
285+         sanitized_input_name=$(echo "$name_input" | tr -cd '[:alnum:] _') 
286+         printf "::debug:: %s\n" "Will use name $sanitized_input_name" ; 
287+         printf "%s\n" "::endgroup::" 
288+         printf "%s\n" "::group::validate-title" 
289+         title_input='${{ inputs.name }}' 
290+         sanitized_input_title=$(echo "$title_input" | tr -cd '[:alnum:] _') 
291+         printf "::debug:: %s\n" "Will use name $sanitized_input_title" ; 
292+         sanitized_input_title_field=$(printf "%s%s" 'output[title]=' "$sanitized_input_title_field" ;) 
293+         printf "%s\n" "::endgroup::" 
237294        printf "%s\n" "::group::complete-check" 
238295        # GitHub CLI api 
239296        # https://cli.github.com/manual/gh_api 
240297        gh api --method PATCH -H "Accept: application/vnd.github+json" \ 
241298        /repos/reactive-firewall-org/multicast/check-runs/${{ steps.output_check_id.outputs.check_id }} \ 
242-         -f "name=${{ inputs.name }} " -f "head_sha=${{ steps.output_sha.outputs.sha }}" \ 
299+         -f "name=$sanitized_input_name " -f "head_sha=${{ steps.output_sha.outputs.sha }}" \ 
243300        -f "status=completed" -f "conclusion=${{ inputs.conclusion }}" \ 
244301        -f "completed_at=${{ steps.output_date.outputs.check_date }}Z" \ 
245302        -f "details_url=${{ steps.output_check_details_url.outputs.details_url }}" \ 
246-         -f 'output[title]=${{ inputs.title }}'  \ 
303+         -f "$sanitized_input_title_field"  \ 
247304        -f 'output[summary]=${{ inputs.summary }}' -f 'output[text]=${{ inputs.text }}' 
248305        printf "%s\n" "::endgroup::" 
249306name : " Report outcome of checks API" 
0 commit comments