# yamllint disable rule:line-length
---
win-dev-build:
  stage: dev-deployment
  tags:
    - win64
  cache:
    paths:
      - .venv/
  rules:
    - if: "$CI_COMMIT_BRANCH == 'dev'"
  environment:
    name: development
  script:
    - |
      $ErrorActionPreference = "Stop"
      py -m venv .venv
      .venv\Scripts\activate.ps1
      pip install pyinstaller
      pip install -r requirements.txt
    - pyinstaller -F main.py
      --distpath .
      --icon app\frontend\static\assets\images\Crafty_4-0_Logo_square.ico
      --name "crafty"
      --paths .venv\Lib\site-packages
      --hidden-import cryptography
      --hidden-import cffi
      --hidden-import apscheduler
      --collect-all tzlocal
      --collect-all tzdata
      --collect-all pytz
      --collect-all six
    - |
      echo "Retrieving 'latest' updater from crafty-controller/crafty-4-windows-updater"
      $src = 'https://gitlab.com/crafty-controller/crafty-4-windows-updater/-/jobs/artifacts/dev/raw/crafty_updater.exe?job=win-dev-build'
      $dest = 'crafty_updater.exe'
      Invoke-WebRequest -Uri $src -OutFile $dest

  # Download latest:
  # | https://gitlab.com/crafty-controller/crafty-4/-/jobs/artifacts/dev/download?job=win-dev-build
  artifacts:
    name: "crafty-${CI_RUNNER_TAGS}-${CI_COMMIT_BRANCH}_${CI_COMMIT_SHORT_SHA}"
    paths:
      - app\
      - .\crafty.exe
      - .\crafty_updater.exe
    exclude:
      - app\classes\**\*

win-prod-build:
  stage: prod-deployment
  tags:
    - win64
  cache:
    paths:
      - .venv/
  rules:
    - if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
    - if: $CI_COMMIT_TAG
  environment:
    name: production
  script:
    - |
      $ErrorActionPreference = "Stop"
      py -m venv .venv
      .venv\Scripts\activate.ps1
      pip install pyinstaller
      pip install -r requirements.txt
    - pyinstaller -F main.py
      --distpath .
      --icon app\frontend\static\assets\images\Crafty_4-0_Logo_square.ico
      --name "crafty"
      --paths .venv\Lib\site-packages
      --hidden-import cryptography
      --hidden-import cffi
      --hidden-import apscheduler
      --collect-all tzlocal
      --collect-all tzdata
      --collect-all pytz
      --collect-all six
    - |
      echo "Retrieving 'latest' updater from crafty-controller/crafty-4-windows-updater"
      $src = 'https://gitlab.com/crafty-controller/crafty-4-windows-updater/-/jobs/artifacts/master/raw/crafty_updater.exe?job=win-prod-build'
      $dest = 'crafty_updater.exe'
      Invoke-WebRequest -Uri $src -OutFile $dest
  after_script:
    - Add-Content -Path job.env -Value "JOB_ID=$CI_JOB_ID"

  # Download latest:
  # | https://gitlab.com/crafty-controller/crafty-4/-/jobs/artifacts/master/download?job=win-prod-build
  artifacts:
    name: "crafty-${CI_RUNNER_TAGS}-${CI_COMMIT_BRANCH}_${CI_COMMIT_SHORT_SHA}"
    paths:
      - app\
      - .\crafty.exe
      - .\crafty_updater.exe
    expire_in: never
    exclude:
      - app\classes\**\*
    reports:
      dotenv: job.env