feat: initial version #14
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
# lint all markdown files | |
name: "CI" | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
types: | |
- opened | |
- synchronize | |
- reopened | |
concurrency: | |
group: "${{ github.workflow }}-${{ github.ref }}" | |
cancel-in-progress: true | |
jobs: | |
validate: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install markdownlint-cli | |
run: | | |
npm install -g markdownlint-cli | |
- name: Lint markdown files | |
run: | | |
markdownlint \ | |
-f \ | |
-o markdownlint_report.log \ | |
'**/*.md' | |
- name: Print summary | |
if: failure() | |
run: | | |
echo "### Linting report:" >> $GITHUB_STEP_SUMMARY | |
cat markdownlint_report.log >> $GITHUB_STEP_SUMMARY | |
echo "### Suggested changes:" >> $GITHUB_STEP_SUMMARY | |
echo '```diff' >> $GITHUB_STEP_SUMMARY | |
echo "$(git diff)" >> $GITHUB_STEP_SUMMARY | |
echo '```' >> $GITHUB_STEP_SUMMARY | |
- name: Additional checks | |
run: | | |
exit_code=0 | |
// find invalid file names | |
find ./commands -type f -name '*.md' -print0 | while IFS= read -r -d '' file; do | |
filename=$(basename "$file") | |
if [[ $filename != 'body.md' && $filename != 'footer.md' ]]; then | |
echo "Invalid file $file. Only body.md and footer.md are allowed" >> $GITHUB_STEP_SUMMARY | |
exit_code=1 | |
fi | |
done | |
// check character count | |
find ./commands -type f \( -name 'body.md' -o -name 'footer.md' \) -print0 | while IFS= read -r -d '' file; do | |
char_count=$(wc -c <"$file") | |
filename=$(basename "$file") | |
if [[ $filename == 'body.md' && $char_count -gt 4096 ]]; then | |
echo "$file exceeds the 4096 character limit" >> $GITHUB_STEP_SUMMARY | |
exit_code=1 | |
elif [[ $filename == 'footer.md' && $char_count -gt 2048 ]]; then | |
echo "$file exceeds the 2048 character limit" | |
exit_code=1 | |
fi | |
if [[ $filename == 'body.md' ]]; then | |
dir=$(dirname "$file") | |
if [[ -f "$dir/footer.md" ]]; then | |
footer_char_count=$(wc -c <"$dir/footer.md") | |
total_char_count=$((char_count + footer_char_count)) | |
if [[ $total_char_count -gt 6000 ]]; then | |
echo "The combined character count of $file and $dir/footer.md exceeds the 6000 character limit" \ | |
>> $GITHUB_STEP_SUMMARY | |
exit_code=1 | |
fi | |
fi | |
fi | |
done | |
exit $exit_code |