deciduous 0.15.0

Decision graph tooling for AI-assisted development. Track every goal, decision, and outcome. Survive context loss. Query your reasoning.
Documentation
name: Update Homebrew Formula

on:
  release:
    types: [published]

jobs:
  update-formula:
    runs-on: ubuntu-latest
    steps:
      - name: Get release info
        id: release
        run: |
          VERSION="${GITHUB_REF_NAME#v}"
          echo "version=$VERSION" >> $GITHUB_OUTPUT
          echo "tag=$GITHUB_REF_NAME" >> $GITHUB_OUTPUT

      - name: Download checksums
        run: |
          gh release download "${{ steps.release.outputs.tag }}" \
            --repo "${{ github.repository }}" \
            --pattern "checksums.txt"
          cat checksums.txt
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Parse checksums
        id: checksums
        run: |
          echo "darwin_arm64=$(grep darwin-arm64 checksums.txt | awk '{print $1}')" >> $GITHUB_OUTPUT
          echo "darwin_amd64=$(grep darwin-amd64 checksums.txt | awk '{print $1}')" >> $GITHUB_OUTPUT
          echo "linux_arm64=$(grep linux-arm64 checksums.txt | awk '{print $1}')" >> $GITHUB_OUTPUT
          echo "linux_amd64=$(grep linux-amd64 checksums.txt | awk '{print $1}')" >> $GITHUB_OUTPUT

      - name: Generate formula
        env:
          VERSION: ${{ steps.release.outputs.version }}
          SHA_DARWIN_ARM64: ${{ steps.checksums.outputs.darwin_arm64 }}
          SHA_DARWIN_AMD64: ${{ steps.checksums.outputs.darwin_amd64 }}
          SHA_LINUX_ARM64: ${{ steps.checksums.outputs.linux_arm64 }}
          SHA_LINUX_AMD64: ${{ steps.checksums.outputs.linux_amd64 }}
        run: |
          cat > deciduous.rb << FORMULA
          class Deciduous < Formula
            desc "Decision graph tooling for AI-assisted development"
            homepage "https://notactuallytreyanastasio.github.io/deciduous/"
            version "${VERSION}"
            license "MIT"

            on_macos do
              on_arm do
                url "https://github.com/notactuallytreyanastasio/deciduous/releases/download/v#{version}/deciduous-darwin-arm64"
                sha256 "${SHA_DARWIN_ARM64}"
              end
              on_intel do
                url "https://github.com/notactuallytreyanastasio/deciduous/releases/download/v#{version}/deciduous-darwin-amd64"
                sha256 "${SHA_DARWIN_AMD64}"
              end
            end

            on_linux do
              on_arm do
                url "https://github.com/notactuallytreyanastasio/deciduous/releases/download/v#{version}/deciduous-linux-arm64"
                sha256 "${SHA_LINUX_ARM64}"
              end
              on_intel do
                url "https://github.com/notactuallytreyanastasio/deciduous/releases/download/v#{version}/deciduous-linux-amd64"
                sha256 "${SHA_LINUX_AMD64}"
              end
            end

            def install
              binary_name = Dir["deciduous-*"].first
              bin.install binary_name => "deciduous"
            end

            test do
              assert_match version.to_s, shell_output("#{bin}/deciduous --version")
            end
          end
          FORMULA

      - name: Set up SSH
        run: |
          mkdir -p ~/.ssh
          echo "${{ secrets.HOMEBREW_TAP_DEPLOY_KEY }}" > ~/.ssh/deploy_key
          chmod 600 ~/.ssh/deploy_key
          ssh-keyscan github.com >> ~/.ssh/known_hosts
          git config --global core.sshCommand "ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no"

      - name: Push formula to tap
        run: |
          git clone git@github.com:notactuallytreyanastasio/homebrew-tap.git tap
          cp deciduous.rb tap/Formula/deciduous.rb
          cd tap
          git config user.email "github-actions[bot]@users.noreply.github.com"
          git config user.name "github-actions[bot]"
          git add Formula/deciduous.rb
          git diff --cached --quiet || git commit -m "deciduous ${{ steps.release.outputs.version }}"
          git push