diff --git a/.github/workflows/homebrew.yml b/.github/workflows/homebrew.yml new file mode 100644 index 0000000..438af3a --- /dev/null +++ b/.github/workflows/homebrew.yml @@ -0,0 +1,141 @@ +name: Build + +on: + push: + tags: + - "*" + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: write + pages: write + id-token: write + +jobs: + create_release: + name: Create Release + runs-on: ubuntu-latest + environment: build + steps: + - name: Create Release + id: create_release + uses: softprops/action-gh-release@v2 + with: + name: ${{ github.ref_name }} + draft: false + prerelease: false + generate_release_notes: true + + build_release: + name: Build Release + needs: create_release + environment: build + outputs: + output_linux_amd: ${{ steps.compute_sha.outputs.output_LINUX_AMD_SHA }} + output_linux_arm: ${{ steps.compute_sha.outputs.output_LINUX_ARM_SHA }} + output_mac_amd: ${{ steps.compute_sha.outputs.output_MAC_AMD_SHA }} + output_mac_arm: ${{ steps.compute_sha.outputs.output_MAC_ARM_SHA }} + strategy: + matrix: + include: + - os: ubuntu-latest + release_suffix: linux-amd + compile_options: --target=bun-linux-x64-modern + sha_field: LINUX_AMD_SHA + - os: ubuntu-latest + release_suffix: linux-arm + compile_options: --target=bun-linux-arm64 + sha_field: LINUX_ARM_SHA + - os: macos-latest + release_suffix: mac + compile_options: --target=bun-darwin-arm64 + sha_field: MAC_ARM_SHA + - os: macos-15 + release_suffix: mac_intel + platform: x64 + compile_options: --target=bun-darwin-x64 + sha_field: MAC_AMD_SHA + runs-on: ${{ matrix.os }} + steps: + - uses: oven-sh/setup-bun@v1 + - name: Checkout code + uses: actions/checkout@v4 + - run: bun install + - run: bun make:exe ${{ matrix.compile_options }} + - name: Rename release package + id: release_package + run: | + cat ./exe/paikea > paikea_${{ matrix.release_suffix }} + - name: Compress action step + uses: a7ul/tar-action@v1.2.0 + id: compress + with: + command: c + cwd: . + files: | + ./paikea_${{ matrix.release_suffix }} + outPath: ./paikea_${{ matrix.release_suffix }}.tar.gz + - name: Compute sha + id: compute_sha + run: | + sha=($(shasum -a 256 ./paikea_${{ matrix.release_suffix }}.tar.gz)) + sha_value="${{ matrix.sha_field }}" + echo "output_${sha_value}=${{ matrix.sha_field }}-$sha" >> "$GITHUB_OUTPUT" + - name: Release + uses: softprops/action-gh-release@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token + with: + tag_name: ${{ needs.create_release.outputs.tag-name }} + files: paikea_${{ matrix.release_suffix }}.tar.gz + generate_release_notes: true + + update_brew_formula: + name: Update formula + runs-on: ubuntu-latest + needs: build_release + steps: + - name: Update formula + uses: yodamad-actions/brew-formula-update@0.5 + with: + file: paikea.rb + owner: gouz + repo: homebrew-tools + version: ${{ github.ref_name }} + fields: ${{ toJSON(needs.build_release.outputs) }} + token: ${{ secrets.BREW_TOKEN }} + auto_merge: true + + generate_deb: + name: Build packages file + needs: create_release + runs-on: ubuntu-latest + steps: + - uses: oven-sh/setup-bun@v1 + - name: Checkout code + uses: actions/checkout@v4 + - run: bun install + - run: bun make:exe + - name: create sample script + run: | + mkdir -p .debpkg/usr/bin + cp -p exe/* .debpkg/usr/bin/ + - name: build-deb-action + uses: jiro4989/build-deb-action@v3 + with: + package: "paikea" + desc: "A full-screen TUI CLI agent powered by local LLMs" + arch: "amd64" + package_root: ".debpkg" + maintainer: "Sylvain Gougouzian " + version: ${{ github.ref_name }} + - name: Release + uses: softprops/action-gh-release@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token + with: + tag_name: ${{ needs.create_release.outputs.tag-name }} + files: paikea_${{ github.ref_name }}_amd64.deb