diff --git a/.github/workflows/comment_coverage.yaml b/.github/workflows/comment_coverage.yaml index b92b56f..7ab407b 100644 --- a/.github/workflows/comment_coverage.yaml +++ b/.github/workflows/comment_coverage.yaml @@ -4,8 +4,8 @@ on: [pull_request] name: Comment Coverage -env: - CARGO_TERM_COLOR: always +#env: +# CARGO_TERM_COLOR: always jobs: check-lint-build-stable: @@ -34,17 +34,23 @@ jobs: - name: Missing docs warnings (PR) id: missing_docs_warnings_pr run: | - cargo -q clippy --message-format=short -- \ - -Aclippy::all \ - -Wclippy::missing_errors_doc \ - -Wclippy::missing_panics_doc \ - -Wclippy::missing_safety_doc \ - -Wclippy::missing_docs_in_private_items \ - -Wmissing_docs \ - 2>&1 \ - | awk -F"[\` ]" \ - '/warning: `.+?` \(lib\) generated [0-9]+ warning[s]?/ { print $3 ": " $7 }' \ - | sort + # use a random EOF, as per GitHub security recommendations + EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) + WARNINGS=$(\ + cargo -q clippy --message-format=short -- \ + -Aclippy::all \ + -Wclippy::missing_errors_doc \ + -Wclippy::missing_panics_doc \ + -Wclippy::missing_safety_doc \ + -Wclippy::missing_docs_in_private_items \ + -Wmissing_docs \ + 2>&1) + echo "$WARNINGS" + AWKSTR='/warning: `.+` \(lib\) generated [0-9]+ warnings?/ { print $3 ": " $7 }' + WARNINGS=$(echo "$WARNINGS" | awk -F"[\` ]" "$AWKSTR" | sort) + echo "PR_WARNINGS<<$EOF" >> "$GITHUB_OUTPUT" + echo "$WARNINGS" >> "$GITHUB_OUTPUT" + echo "$EOF" >> "$GITHUB_OUTPUT" - name: Checkout target branch uses: actions/checkout@v2 @@ -54,22 +60,35 @@ jobs: - name: Missing docs warnings (Target) id: missing_docs_warnings_target run: | - cargo -q clippy --message-format=short -- \ - -Aclippy::all \ - -Wclippy::missing_errors_doc \ - -Wclippy::missing_panics_doc \ - -Wclippy::missing_safety_doc \ - -Wclippy::missing_docs_in_private_items \ - -Wmissing_docs \ - 2>&1 \ - | awk -F"[\` ]" \ - '/warning: `.+?` \(lib\) generated [0-9]+ warning[s]?/ { print $3 ": " $7 }' \ - | sort + # use a random EOF, as per GitHub security recommendations + EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) + WARNINGS=$(\ + cargo -q clippy --message-format=short -- \ + -Aclippy::all \ + -Wclippy::missing_errors_doc \ + -Wclippy::missing_panics_doc \ + -Wclippy::missing_safety_doc \ + -Wclippy::missing_docs_in_private_items \ + -Wmissing_docs \ + 2>&1) + echo "$WARNINGS" + AWKSTR='/warning: `.+` \(lib\) generated [0-9]+ warnings?/ { print $3 ": " $7 }' + WARNINGS=$(echo "$WARNINGS" | awk -F"[\` ]" "$AWKSTR" | sort) + echo "TARGET_WARNINGS<<$EOF" >> "$GITHUB_OUTPUT" + echo "$WARNINGS" >> "$GITHUB_OUTPUT" + echo "$EOF" >> "$GITHUB_OUTPUT" - name: Compare comment coverage run: | - IFS=$'\n' read -rd '' -a missing_docs_warnings_pr_arr <<< "${{steps.missing_docs_warnings_pr.outcome}}" - IFS=$'\n' read -rd '' -a missing_docs_warnings_target_arr <<< "${{steps.missing_docs_warnings_target.outcome}}" + echo "OK 0" + PR_WARNINGS="${{steps.missing_docs_warnings_pr.outputs.PR_WARNINGS}}" + echo "OK 0.1" + TARGET_WARNINGS="${{ steps.missing_docs_warnings_target.outputs.TARGET_WARNINGS }}" + echo "OK 0.2" + IFS=$'\n' read -rd '' -a missing_docs_warnings_pr_arr <<< "$PR_WARNINGS" + echo "OK 1" + IFS=$'\n' read -rd '' -a missing_docs_warnings_target_arr <<< "$TARGET_WARNINGS" + echo "OK 2" for pr_warnings_line in "${missing_docs_warnings_pr_arr[@]}" do # Extract the libname and number of warnings from the line