name: Build and Upload to S3

on:
  push:
    branches:
      - main
      - test_ci

jobs:
  build-and-upload:
    runs-on: self-hosted

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 18.19.0

      - name: Load nvm
        run: |
          export NVM_DIR="$HOME/.nvm"
          [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
          nvm use 18.19.0
          npm install -g pnpm@7.32.0
          pnpm --version


      - name: Install dependencies
        run: |
          unset NODE_ENV
          export NVM_DIR="$HOME/.nvm"
          [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
          nvm use 18.19.0
          npm install -g pnpm@7.32.0
          pnpm install
          pnpm run build

      - name: Get short commit hash
        id: vars
        run: echo "GIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV

      - name: Get tag (if exists)
        id: tag
        run: |
          TAG=$(git describe --tags --exact-match 2>/dev/null || echo "")
          echo "GIT_TAG=$TAG" >> $GITHUB_ENV

      - name: Zip build folder
        run: |
          ZIP_NAME="build_${GIT_TAG:-$GIT_HASH}.zip"
          zip -r "$ZIP_NAME" ./dist

      - name: Create tar.gz build folder
        run: |
          TAR_NAME="build_${GIT_TAG:-$GIT_HASH}.tar.gz"
          tar -czf "$TAR_NAME" ./dist          

      - name: Upload to S3
        env:
          S3_BUCKET: ${{ secrets.S3_BUCKET }}
        run: |
          ZIP_NAME="build_${GIT_TAG:-$GIT_HASH}.zip"
          TAR_NAME="build_${GIT_TAG:-$GIT_HASH}.tar.gz"
          echo "ZIP_NAME is $ZIP_NAME"
          echo "TAR_NAME is $TAR_NAME"
          aws s3 cp "$ZIP_NAME" "s3://$S3_BUCKET/gasfree_sdk_js/"
          aws s3 cp "$TAR_NAME" "s3://$S3_BUCKET/gasfree_sdk_js/"