name: Publish to Snapcraft

on:
  workflow_dispatch:
    inputs:
      build:
        description: 'Build and publish to Snapcraft'
        required: true
        default: 'true'

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

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

      - name: Check package-lock.json
        run: npm ci --legacy-peer-deps

      - name: Install dependencies
        run: npm install --legacy-peer-deps

      - name: Build Electron app
        run: |
          npm run build:bruno-common
          npm run build:bruno-query
          npm run build:graphql-docs
          npm run build:web
          npm run build:electron:snap

      - name: Install Snapcraft
        run: |
          sudo snap install snapcraft --classic
        continue-on-error: true

      - name: Configure Snapcraft
        run: snapcraft whoami
        env:
          SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_API_KEY }}

      - name: Publish to Snapcraft
        run: |
          snapcraft upload --release=stable packages/bruno-electron/out/*.snap
        env:
          SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_API_KEY }}
