code-chronicles-code / code-chronicles-code/leetcode-curriculum

Re-implement and enhance `check-formatting.yml` Github Actions workflow as a Node script

未關閉
#226 0 則留言 0 個 reaction 已指派 1 人 已被 @miorel 認領 在 GitHub 檢視
enhancement
主要語言
TypeScript
星號
20
分支
12
PR 合併指標
30 天內沒有已合併 PR

描述

The workflow introduced in #225 is currently powered by a shell command, namely `yarn format && git status --porcelain` piped through some not very easy to maintain inline Perl.

Let's rewrite this as a Node script that's more maintainable. This is also an opportunity to address the other TODO in the workflow file, and have it output a summary as described at https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary

The general behavior of the workflow should be:
1. Run `yarn format` to rewrite any files that are not correctly formatted. This part can still happen outside Node, so for example the command we run becomes something like `yarn format && node some-script.js`.
2. The script basically replaces the `git status --porcelain` part and the subsequent Perl expression it's piped into. The script should therefore still run `git status --porcelain` from within Node and capture the output.
3. For each line in the output of `git status --porcelain`, the script should remove the first 3 characters (see explanation of the format at https://git-scm.com/docs/git-status#_porcelain_format_version_1 to understand why) to get only the filename. It should then output an error message (using the format described at https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-error-message) to indicate that the file in question doesn't respect the repository's formatting rules.
4. For bonus points (this part can be done as a separate PR) output a markdown summary at the end.
5. If there were any files that were improperly formatted, the script should exit with a non-zero exit code so that the check fails and draws the attention of the author and reviewers.

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。