diff --git a/.github/workflows/update-sponsor-block.yml b/.github/workflows/update-sponsor-block.yml index f55e5320..ac7b549f 100644 --- a/.github/workflows/update-sponsor-block.yml +++ b/.github/workflows/update-sponsor-block.yml @@ -33,18 +33,26 @@ jobs: run: npm ci - name: Check if sponsors require updates id: sponsors-requires-update - run: node ./bin/sponsors.js + run: node ./scripts/sponsors/update-readme-sponsors.mjs + - name: Check tracked README sponsor diff + id: readme-tracked-change + run: | + if git diff --quiet -- README.md; then + echo "readme_changed=false" >> "$GITHUB_OUTPUT" + else + echo "readme_changed=true" >> "$GITHUB_OUTPUT" + fi - name: Read sponsors.md file content run: | echo 'CONTENT<> $GITHUB_ENV cat ./temp/sponsors.md >> $GITHUB_ENV echo 'EOF' >> $GITHUB_ENV shell: bash - if: steps.sponsors-requires-update.outputs.changed == 'true' + if: steps.sponsors-requires-update.outputs.changed == 'true' && steps.readme-tracked-change.outputs.readme_changed == 'true' - name: Echo sponsors content run: | echo "$CONTENT" - if: steps.sponsors-requires-update.outputs.changed == 'true' + if: steps.sponsors-requires-update.outputs.changed == 'true' && steps.readme-tracked-change.outputs.readme_changed == 'true' - name: Create pull request uses: peter-evans/create-pull-request@v8 with: @@ -61,4 +69,4 @@ jobs: type::automated-pr signoff: false draft: false - if: steps.sponsors-requires-update.outputs.changed == 'true' + if: steps.sponsors-requires-update.outputs.changed == 'true' && steps.readme-tracked-change.outputs.readme_changed == 'true' diff --git a/.gitignore b/.gitignore index 560973a0..5f3c1142 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ backup/ dist/ .vscode/ docs/ +openspec/ diff --git a/bin/sponsors.js b/scripts/sponsors/update-readme-sponsors.mjs similarity index 72% rename from bin/sponsors.js rename to scripts/sponsors/update-readme-sponsors.mjs index 803d9323..f39efb3e 100644 --- a/bin/sponsors.js +++ b/scripts/sponsors/update-readme-sponsors.mjs @@ -1,7 +1,5 @@ import fs from 'fs/promises'; -import _axios from '../index.js'; -import { exec } from './repo.js'; -import { colorize } from './helpers/colorize.js'; +import _axios from '../../index.js'; const axios = _axios.create({ headers: { @@ -27,6 +25,15 @@ const getWithRetry = (url, retries = 3) => { return doRequest(); }; +const setGithubOutput = async (key, value) => { + if (!process.env.GITHUB_OUTPUT) { + console.warn(`GITHUB_OUTPUT is not set; skipping output ${key}=${value}`); + return; + } + + await fs.appendFile(process.env.GITHUB_OUTPUT, `${key}=${value}\n`); +}; + const updateReadmeSponsors = async (url, path, marker = '') => { let fileContent = (await fs.readFile(path)).toString(); @@ -41,14 +48,14 @@ const updateReadmeSponsors = async (url, path, marker = '