Re: [PATCH v2 1/3] ci (check-whitespace): suggest fixes for errors
- From
Đoàn Trần Công Danh <congdanhqx@gmail.com>
- Date
- Dec 20, 2022, 07:34 UTC
- Message-ID
- <Y6Fle8gzVU5si3T/@danh.dev>
- In-Reply-To
- <a2b5f3e87d6ef62d8005cff5568ad3afc4af3771.1671496548.git.gitgitgadget@gmail.com>
On 2022-12-20 00:35:45+0000, "Chris. Webster via GitGitGadget" <gitgitgadget@gmail.com> wrote:
Show 7 quoted lines
> From: "Chris. Webster" <chris@webstech.net> > > Make the errors more visible by adding them to the job summary and > display the git commands that will usually fix the problem. > > Signed-off-by: Chris. Webster <chris@webstech.net> > ---
I think this change is getting too long to be embeded in a yaml file. I think it's better to move the shell code into its own script, so we can have better code highlight in editor and a proper shebang (/bin/bash).
Show 60 quoted lines
> .github/workflows/check-whitespace.yml | 37 +++++++++++++++++++-------
> 1 file changed, 28 insertions(+), 9 deletions(-)
>
> diff --git a/.github/workflows/check-whitespace.yml b/.github/workflows/check-whitespace.yml
> index ad3466ad16e..a0871489b24 100644
> --- a/.github/workflows/check-whitespace.yml
> +++ b/.github/workflows/check-whitespace.yml
> @@ -20,31 +20,50 @@ jobs:
> - name: git log --check
> id: check_out
> run: |
> - log=
> + problems=()
> commit=
> - while read dash etc
> + commitText=
> + lastcommit=
> + while read dash sha etc
> do
> case "${dash}" in
> "---")
> - commit="${etc}"
> + if test -z "${commit}"
> + then
> + lastcommit=${sha}
> + fi
> + commit="${sha}"
> + commitText="${sha} ${etc}"
> ;;
> "")
> ;;
> *)
> if test -n "${commit}"
> then
> - log="${log}\n${commit}"
> + problems+=("" "--- ${commitText}")
> echo ""
> - echo "--- ${commit}"
> + echo "--- ${commitText}"
> + commit=
> fi
> - commit=
> - log="${log}\n${dash} ${etc}"
> - echo "${dash} ${etc}"
> + problems+=("${dash} ${sha} ${etc}")
> + echo "${problems[-1]}"
> ;;
> esac
> done <<< $(git log --check --pretty=format:"---% h% s" ${{github.event.pull_request.base.sha}}..)
>
> - if test -n "${log}"
> + if test ${#problems[*]} -gt 0
> then
> + if test -z "${commit}"
> + then
> + lastcommit=${{github.event.pull_request.base.sha}}
> + fi
> + echo "A whitespace issue was found in one or more of the commits." >$GITHUB_STEP_SUMMARY
> + echo "" >>$GITHUB_STEP_SUMMARY
> + echo "Run \`git rebase --whitespace=fix ${lastcommit}\` and \`git push --force\` to correct the problem." >>$GITHUB_STEP_SUMMARYWhen move this block into its own script, we can use single quote string here, too.
Show 10 quoted lines
> + for i in "${problems[@]}"
> + do
> + echo "${i}" >>$GITHUB_STEP_SUMMARY
> + done
> +
> exit 2
> fi
> --
> gitgitgadget
> -- Danh