name: "Build Helper"
on: workflow_dispatch
env:
    GO_VERSION: "1.22.0"
    NODE_VERSION: "21.5.0"
jobs:
    runbuild:
        strategy:
            matrix:
                include:
                    - platform: "darwin"
                      arch: "universal"
                      runner: "macos-latest-xlarge"
                      scripthaus: "build-package"
                    - platform: "linux"
                      arch: "amd64"
                      runner: "ubuntu-latest"
                      scripthaus: "build-package-linux"
        runs-on: ${{ matrix.runner }}
        steps:
            - uses: actions/checkout@v4
            - uses: actions/checkout@v4
              with:
                  repository: scripthaus-dev/scripthaus
                  path: scripthaus
            - name: Install Linux Build Dependencies (Linux only)
              if: matrix.platform == 'linux'
              run: |
                  sudo apt-get update
                  sudo apt-get install rpm
            - uses: actions/setup-go@v5
              with:
                  go-version: ${{env.GO_VERSION}}
                  cache-dependency-path: |
                      wavesrv/go.sum
                      waveshell/go.sum
                      scripthaus/go.sum
            - name: Install Scripthaus
              run: |
                  go work use ./scripthaus;
                  cd scripthaus;
                  go get ./...;
                  CGO_ENABLED=1 go build -o scripthaus cmd/main.go
            - uses: actions/setup-node@v4
              with:
                  node-version: ${{env.NODE_VERSION}}
                  cache: "yarn"
            - name: Set Version
              id: set-version
              run: |
                  VERSION=$(node -e 'console.log(require("./version.js"))')
                  echo "WAVETERM_VERSION=${VERSION}" >> "$GITHUB_OUTPUT"
            - name: Install Yarn Dependencies
              run: yarn --frozen-lockfile
            - name: Build ${{ matrix.platform }}/${{ matrix.arch }}
              run: ./scripthaus/scripthaus run ${{ matrix.scripthaus }}
              env:
                  GOARCH: ${{ matrix.arch }}
                  CSC_LINK: ${{ matrix.platform == 'darwin' && secrets.PROD_MACOS_CERTIFICATE}}
                  CSC_KEY_PASSWORD: ${{ matrix.platform == 'darwin' && secrets.PROD_MACOS_CERTIFICATE_PWD }}
                  APPLE_ID: ${{ matrix.platform == 'darwin' && secrets.PROD_MACOS_NOTARIZATION_APPLE_ID }}
                  APPLE_APP_SPECIFIC_PASSWORD: ${{ matrix.platform == 'darwin' && secrets.PROD_MACOS_NOTARIZATION_PWD }}
                  APPLE_TEAM_ID: ${{ matrix.platform == 'darwin' && secrets.PROD_MACOS_NOTARIZATION_TEAM_ID }}
            - name: Upload to S3 staging
              run: aws s3 cp make/ s3://waveterm-github-artifacts/staging/${{ steps.set-version.outputs.WAVETERM_VERSION }}/ --recursive --exclude "*/*" --exclude "builder-*.yml"
              env:
                  AWS_ACCESS_KEY_ID: "${{ secrets.S3_USERID }}"
                  AWS_SECRET_ACCESS_KEY: "${{ secrets.S3_SECRETKEY }}"
                  AWS_DEFAULT_REGION: us-west-2