name: Release

on:
  push:
  release:
    branches: [main]
    types:
      - published
    paths-ignore:
      - "**.md"
      - "**.spec.js"
      - ".idea"
      - ".vscode"
      - ".dockerignore"
      - "Dockerfile"
      - ".gitignore"
      - ".github/**"
      - "!.github/workflows/release.yml"

defaults:
  run:
    shell: "bash"

jobs:
  build:
    # see more environment https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on
    runs-on: [ubuntu-20.04]
    # https://www.electron.build/multi-platform-build#provided-docker-images
    container: electronuserland/builder:wine

    env:
      GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      ELECTRON_BUILDER_CACHE: "/root/.cache/electron-builder"
      ELECTRON_CACHE: "/root/.cache/electron"

    strategy:
      matrix:
        node: ["14"]

    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0

      - name: Use Node.js ${{ matrix.node }}
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node }}

      - name: Install dependencies
        run: npm ci

      # - name: Run tests
      #   run: npm run test

      # - name: Build dependencies
      #   run: npm run build
      #   env:
      #     GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      # - uses: actions/upload-artifact@v2
      #   with:
      #     name: upload-artifact
      #     path: |
      #       release/electron-vue-vite*.exe
      #       release/electron-vue-vite*.AppImage
      #       release/electron-vue-vite*.snap

      # https://github.com/marketplace/actions/electron-builder-action
      - name: Compile & Release Electron app
        uses: samuelmeuli/action-electron-builder@v1
        with:
          build_script_name: prebuild
          args: --config electron-builder.json
          github_token: ${{ secrets.GITHUB_TOKEN }}
          release: ${{ startsWith(github.ref, 'refs/tags/v') && github.event_name == 'push' && needs.get_metadata.outputs.branch == 'main'}}
          max_attempts: 3
