name: Build Binary & Release

on:
    push:
      tags:
        - 'v*'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Setup Go
        uses: actions/setup-go@v6
        with:
          go-version: '1.25'
      - uses: actions/checkout@v3
      - name: Setup Go Workfile
        run: go work init ./ci ./ 
      - run: cd ci && go get dagger.io/dagger@latest && cd ..
      - run: mkdir ./dist
      - run: |
          export Coco_Version=${GITHUB_REF#refs/*/}
          go run ci/build_test_release.go
      - name: Auto Changelog
        uses: ardalanamini/auto-changelog@v4.0.1
        id  : changelog
        with:
          github-token            : ${{ secrets.GITHUB_TOKEN }}
          commit-types            : |
            feat: New Features
            fix: Bug Fixes
            build: Build System & Dependencies
            perf: Performance Improvements
            docs: Documentation
            test: Tests
            refactor: Refactors
            chore: Chores
            ci: CI
            cd: CD
            style: Code Style
            revert: Reverts
      - name: publish project
        shell: bash
        run: |
          cp ./src/author.txt ./dist

          #linux build
          release_name_linux="cocommit-linux"

          tar -C ./dist -czvf "${release_name_linux}.tar.gz" cocommit-linux

          #windows build
          release_name_win="cocommit-win"
          tar -C ./dist -czvf "${release_name_win}.tar.gz" cocommit-windows

          #mac x86 build
          release_name_mac="cocommit-darwin-x86_64"
          tar -C ./dist -czvf "${release_name_mac}.tar.gz" cocommit-darwin

          # mac arm build
          release_name_mac_arm="cocommit-darwin-aarch64"
          tar -C ./dist -czvf "${release_name_mac_arm}.tar.gz" cocommit-darwin-aarch64

      - name: Release project
        uses: softprops/action-gh-release@v1
        with:
            body: ${{steps.changelog.outputs.changelog}}
            files: "*.tar.gz"
        env:
            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
