XS✔ ◾ [⚠️Don't merge] Testing new markdown action #37
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
name: Validate-Markdown | |
on: | |
pull_request: | |
branches: [ main ] | |
paths: | |
- '**.md' | |
workflow_dispatch: | |
jobs: | |
validate-markdown: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
issues: write | |
repository-projects: read | |
pull-requests: write | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
token: ${{ secrets.GITHUB_TOKEN }} | |
ref: ${{ github.event.pull_request.head.ref }} | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
- name: Get changed files | |
id: files | |
uses: lots0logs/[email protected] | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Filter and format Markdown files | |
id: markdown_files | |
run: | | |
MARKDOWN_FILES=$(echo '${{ steps.files.outputs.all }}' | jq -r '.[] | select(endswith(".md"))') | |
echo "::set-output name=list::$MARKDOWN_FILES" | |
- name: Install markdownlint-cli | |
run: npm install -g markdownlint-cli | |
- name: Lint Markdown files | |
id: lint_markdown | |
run: | | |
markdownlint ${{ steps.markdown_files.outputs.list }} --config .markdownlint/config.json > lint-results.txt 2>&1 || true | |
if [[ -s lint-results.txt ]]; then | |
echo "Linting errors found" | |
cat lint-results.txt | |
echo "::set-output name=result::$(cat lint-results.txt)" | |
exit 1 | |
fi | |
- name: Add Job Summary if linting fails | |
if: failure() | |
run: | | |
echo "Markdown Linting Errors:" >> $GITHUB_STEP_SUMMARY | |
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY | |
cat lint-results.txt >> $GITHUB_STEP_SUMMARY | |
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY | |
- name: Comment on PR with linting errors | |
if: failure() && github.event.pull_request.head.repo.fork == false | |
run: | | |
PR_COMMENT="Hi @${{ github.event.pull_request.user.login }},\n\nThere were some Markdown Linting Errors in your pull request:\n\n" | |
PR_COMMENT+=$(awk 'BEGIN {FS=":"; ORS=""} {print "- [ ] [", $1, "](", $1, ") ", $2, "\n"}' lint-results.txt) | |
PR_COMMENT+="\nPlease review the errors and update your Markdown files accordingly.\n" | |
echo "$PR_COMMENT" > pr_comment.md | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Upload PR Comment | |
if: failure() && github.event.pull_request.head.repo.fork == false | |
uses: mshick/add-pr-comment@v2 | |
with: | |
message-path: pr_comment.md | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
allow-repeats: true | |
- name: Auto-fix Markdown files | |
run: | | |
markdownlint --fix ${{ steps.markdown_files.outputs.list }} --config .markdownlint/config.json || true | |
echo "Auto-fix applied" | |
# Note: Removed the diff creation and suggestion comments. | |
# You need to decide how you want to handle the suggestions after auto-fix. |