diff --git a/.github/workflows/generate-cli-reference.yml b/.github/workflows/generate-cli-reference.yml new file mode 100644 index 000000000..2c036649b --- /dev/null +++ b/.github/workflows/generate-cli-reference.yml @@ -0,0 +1,94 @@ +name: Generate CLI Reference + +on: + workflow_dispatch: {} + pull_request: + paths: + - 'docs/node-operators/mina-cli-reference.mdx' + - 'scripts/generate-cli-reference.sh' + - '.github/workflows/generate-cli-reference.yml' + push: + branches: + - main + paths: + - 'docs/node-operators/mina-cli-reference.mdx' + - 'scripts/generate-cli-reference.sh' + - '.github/workflows/generate-cli-reference.yml' + +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" + + - name: Generate CLI reference + run: | + chmod +x scripts/generate-cli-reference.sh + ./scripts/generate-cli-reference.sh mina /tmp/mina-cli-reference + + - name: Check if CLI reference is outdated + 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 "::warning::CLI reference is outdated (current mina version: ${{ steps.version.outputs.mina_version }})" + 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: + if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' + needs: 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" + + - name: Generate CLI reference + run: | + chmod +x scripts/generate-cli-reference.sh + ./scripts/generate-cli-reference.sh 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 from `mina` version `${{ steps.version.outputs.mina_version }}` (bookworm). + + Generated by `scripts/generate-cli-reference.sh`. + branch: auto/cli-reference-update + base: main