# This is a basic workflow to help you get started with Actions
name: 'Windows Build'

# Controls when the action will run.
on:
  # Triggers the workflow on push or pull request events but only for the main branch
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
permissions:
  contents: read

jobs:
  build:
    strategy:
      matrix:
        node-version: [20]

    # The type of runner that the job will run on
    runs-on: windows-2022

    steps:
    - uses: actions/checkout@v4

    - name: Cache node modules
      uses: actions/cache@v4
      env:
        cache-name: cache-node-modules
      with:
        # npm cache files are stored in `~/.npm`
        path: ~/.npm
        key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
        restore-keys: |
          ${{ runner.os }}-build-${{ env.cache-name }}-
          ${{ runner.os }}-build-
          ${{ runner.os }}-

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

    - name: Install Dependencies
      run: npm i

    - name: Build the app
      run: npm run electron:build

    - name: Upload EXE artifact
      uses: actions/upload-artifact@v4
      with:
        name: monerod-gui-windows-portable
        path: release/*.exe

    - name: Upload MSI artifact
      uses: actions/upload-artifact@v4
      with:
        name: monerod-gui-windows-installer
        path: release/*.msi