diff --git a/.github/workflows/check-cli-reference.yml b/.github/workflows/check-cli-reference.yml new file mode 100644 index 000000000..1ac1bbf67 --- /dev/null +++ b/.github/workflows/check-cli-reference.yml @@ -0,0 +1,97 @@ +name: Check CLI reference is up to date + +on: + pull_request: + branches: + - main + paths: + - 'docs/node-operators/mina-cli-reference.mdx' + - 'scripts/generate-cli-reference.sh' + - '.github/workflows/check-cli-reference.yml' + workflow_dispatch: {} + schedule: + - cron: '0 6 * * 1' # Weekly on Monday at 6am UTC + +jobs: + check-cli-reference: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install Mina daemon + run: | + echo "deb [trusted=yes] http://packages.o1test.net/ bookworm stable" | sudo tee /etc/apt/sources.list.d/mina.list + sudo apt-get update + sudo apt-get install -y mina-mainnet + + - name: Capture installed version + id: version + run: | + VERSION=$(dpkg-query -W -f='${Version}' mina-mainnet) + echo "mina_version=$VERSION" >> "$GITHUB_OUTPUT" + echo "Installed mina version: $VERSION" + + - name: Generate CLI reference + run: | + chmod +x scripts/generate-cli-reference.sh + ./scripts/generate-cli-reference.sh /usr/lib/mina/mesa/mina /tmp/mina-cli-reference + + - name: Check for differences + run: | + cp /tmp/mina-cli-reference/mina-cli-reference.md /tmp/generated.mdx + if ! diff -q docs/node-operators/mina-cli-reference.mdx /tmp/generated.mdx > /dev/null 2>&1; then + echo "" + echo "❌ CLI reference is outdated (mina version: ${{ steps.version.outputs.mina_version }})" + echo "Run './scripts/generate-cli-reference.sh /usr/lib/mina/mesa/mina /tmp/out' and copy the output to docs/node-operators/mina-cli-reference.mdx" + echo "" + diff --unified docs/node-operators/mina-cli-reference.mdx /tmp/generated.mdx || true + exit 1 + else + echo "✅ CLI reference is up to date with mina ${{ steps.version.outputs.mina_version }}" + fi + + update-cli-reference: + needs: check-cli-reference + if: | + always() && needs.check-cli-reference.result == 'failure' && + (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install Mina daemon + run: | + echo "deb [trusted=yes] http://packages.o1test.net/ bookworm stable" | sudo tee /etc/apt/sources.list.d/mina.list + sudo apt-get update + sudo apt-get install -y mina-mainnet + + - name: Capture installed version + id: version + run: | + VERSION=$(dpkg-query -W -f='${Version}' mina-mainnet) + echo "mina_version=$VERSION" >> "$GITHUB_OUTPUT" + + - name: Generate CLI reference + run: | + chmod +x scripts/generate-cli-reference.sh + ./scripts/generate-cli-reference.sh /usr/lib/mina/mesa/mina /tmp/mina-cli-reference + + - name: Copy output to docs + run: | + cp /tmp/mina-cli-reference/mina-cli-reference.md docs/node-operators/mina-cli-reference.mdx + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v6 + with: + commit-message: "Update CLI reference for mina ${{ steps.version.outputs.mina_version }}" + title: "Update CLI reference for mina ${{ steps.version.outputs.mina_version }}" + body: | + Auto-generated CLI reference update from `mina` version `${{ steps.version.outputs.mina_version }}`. + + Generated by `scripts/generate-cli-reference.sh` using `/usr/lib/mina/mesa/mina`. + branch: auto/cli-reference-update + base: main