name: Windows Installer

concurrency: 
  group: ${{ github.workflow }}#${{ github.ref }}
  cancel-in-progress: true  

on:
  push:
    branches: 
      - master
      - release/**
  pull_request:
    branches:
      - master
      - release/**
# TODO : https://github.com/neuronsimulator/nrn/issues/1063
#    paths-ignore:
#      - '**.md'
#      - '**.rst'
#      - 'docs/**'
env:
  MSYS2_ROOT: C:\msys64

jobs:
  WindowsInstaller:
    runs-on: windows-latest
    timeout-minutes: 60

    steps:
    - uses: actions/checkout@v4
      with:
        fetch-depth: 0
        
    - name: Set up Python3
      uses: actions/setup-python@v5
      with:
        python-version: '3.11'

    - name: Download Dependencies
      run: |
        .\nrn\ci\win_download_deps.cmd
      shell: powershell
      working-directory: ${{runner.workspace}}
       
    - name: Install Dependencies
      run: .\nrn\ci\win_install_deps.cmd
      shell: powershell
      working-directory: ${{runner.workspace}}
      
    - name: Build and Create Installer
      run: |
        rm.exe C:\WINDOWS\system32\bash.EXE
        %MSYS2_ROOT%\usr\bin\bash -lc "$BUILD_SOURCESDIRECTORY/ci/win_build_cmake.sh"
      shell: cmd
      working-directory: ${{runner.workspace}}\nrn
      env:
        BUILD_SOURCESDIRECTORY: ${{runner.workspace}}\nrn

    # This step will set up an SSH connection on tmate.io for live debugging.
    # To enable it, you have to:
    #   * add 'live-debug-win' to your PR title
    #   * push something to your PR branch (note that just re-running the pipeline disregards the title update)
    - name: live debug session on failure (manual steps required, check `.github/windows.yml`)
      if: failure() && contains(github.event.pull_request.title, 'live-debug-win')
      uses: mxschmitt/action-tmate@v3

    - name: Upload build artifact
      uses: actions/upload-artifact@v4
      with:
        name: nrn-nightly-AMD64.exe
        path: ${{runner.workspace}}\nrn\nrn-nightly-AMD64.exe

    - name: Run installer and launch .hoc associaton test
      run: .\ci\win_install_neuron.cmd
      shell: cmd
      working-directory: ${{runner.workspace}}\nrn

    - name: Test Installer
      # temporarily disable rxd testing ( ci/win_test_installer.cmd <-> ci/win_test_installer_wo_rxd.cmd)
      # see https://github.com/neuronsimulator/nrn/issues/1522
      run: .\ci\win_test_installer_wo_rxd.cmd
      shell: cmd
      working-directory: ${{runner.workspace}}\nrn
