# Build and release binaries for all major os/archs

name: Release to Github
on:
  push:
    tags:
      - 'mmdbctl-*'

permissions:
  contents: write
  packages: write

jobs:
  release:
    name: Release to Github
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Setup GO
      uses: actions/setup-go@v5
      with:
        go-version: '1.24'

    - name: Extract CLI Name and Version
      run: |
        # Get the tag name from the event payload
        TAG_NAME=${{ github.ref_name }}

        # Use a regular expression to extract the CLI name and version
        if [[ $TAG_NAME =~ ^([^-]+)-([^-]+)$ ]]; then
          CLI_NAME="${BASH_REMATCH[1]}"
          CLI_VERSION="${BASH_REMATCH[2]}"

          echo "CLI Name: $CLI_NAME"
          echo "CLI Version: $CLI_VERSION"

          # Add to github env
          echo "CLI_NAME=$CLI_NAME" >> $GITHUB_ENV
          echo "CLI_VERSION=$CLI_VERSION" >> $GITHUB_ENV
        else
          echo "Invalid tag format: $TAG_NAME"
          echo "Tag should be of format CLI-VSN. e.g. mmdbctl-1.0.0"
          exit 1
        fi

    - name: Build
      run: ./scripts/build-archive-all.sh ${{ env.CLI_VERSION }}

    - name: Generate changelog
      run: ./scripts/changelog.sh ${{ env.CLI_VERSION }} > changes.md

    - name: Release
      uses: softprops/action-gh-release@v1
      with:
        body_path: changes.md
        files: |
          ./build/${{ env.CLI_NAME }}_${{ env.CLI_VERSION }}*.tar.gz
          ./build/${{ env.CLI_NAME }}_${{ env.CLI_VERSION }}*.zip
          ./build/${{ env.CLI_NAME }}_${{ env.CLI_VERSION }}*.deb
          ./macos.sh
          ./windows.ps1
          ./deb.sh
