variables:
  GIT_SUBMODULE_STRATEGY: recursive
  PYTHON: "C:\\python310\\python.exe"
  PYTHON37: "C:\\python37\\python.exe" # for Windows 7 support.
  NSIS: "C:\\program files (x86)\\nsis\\makensis.exe"

stages:
  - build
  - make_installer
  - upload

twblue32:
  tags:
    - shared-windows
    - windows
    - windows-1809
  before_script:
    - Set-Variable -Name "time" -Value (date -Format "%H:%m")
    - echo ${time}
    - echo "started by ${GITLAB_USER_NAME}"
    - choco install python --version 3.10.8 -y -ForceX86
    - '&$env:PYTHON -V'
    - '&$env:PYTHON -m pip install --upgrade pip'
    - '&$env:PYTHON -m pip install --upgrade https://github.com/josephsl/wxpy32whl/blob/main/wxPython-4.2.0-cp310-cp310-win32.whl?raw=true'
    - '&$env:PYTHON -m pip install --upgrade -r requirements.txt'
  stage: build
  interruptible: true
  script:
    # Create html documentation firstly.
    - cd doc
    - '&$env:PYTHON documentation_importer.py'
    - cd ..\src
    - '&$env:PYTHON ..\doc\generator.py'
    - '&$env:PYTHON write_version_data.py'
    - '&$env:PYTHON setup.py build'
    - cd ..
    - mkdir artifacts
    - cd scripts
    - '&$env:PYTHON make_archive.py'
    - cd ..
    - mv src/dist artifacts/TWBlue
    - move src/twblue.zip artifacts/twblue_x86.zip
    # Move the generated script nsis file to artifacts, so we won't need python when generating the installer.
    - move scripts/twblue.nsi artifacts/twblue.nsi
  only:
    - tags
  artifacts:
    paths:
      - artifacts
    expire_in: 1 day

twblue64:
  tags:
    - shared-windows
    - windows
    - windows-1809
  before_script:
    - Set-Variable -Name "time" -Value (date -Format "%H:%m")
    - echo ${time}
    - echo "started by ${GITLAB_USER_NAME}"
    - choco install python --version 3.10.8 -y
    - '&$env:PYTHON -V'
    - '&$env:PYTHON -m pip install --upgrade pip'
    - '&$env:PYTHON -m pip install --upgrade -r requirements.txt'
  stage: build
  interruptible: true
  script:
    # Create html documentation firstly.
    - cd doc
    - '&$env:PYTHON documentation_importer.py'
    - cd ..\src
    - '&$env:PYTHON ..\doc\generator.py'
    - '&$env:PYTHON write_version_data.py'
    - New-Item "appkeys.py" -ItemType File -Value "twitter_api_key='$TWITTER_API_KEY'`ntwitter_api_secret='$TWITTER_API_SECRET'"
    - '&$env:PYTHON setup.py build'
    - cd ..
    - mkdir artifacts
    - cd scripts
    - '&$env:PYTHON make_archive.py'
    - cd ..
    - mv src/dist artifacts/TWBlue64
    - move src/twblue.zip artifacts/twblue_x64.zip
  only:
    - tags
  artifacts:
    paths:
      - artifacts
    expire_in: 1 day

twblueWin7:
  tags:
    - shared-windows
    - windows
    - windows-1809
  before_script:
    - Set-Variable -Name "time" -Value (date -Format "%H:%m")
    - echo ${time}
    - echo "started by ${GITLAB_USER_NAME}"
    - choco install python --version 3.7.9 -y -ForceX86
    - '&$env:PYTHON37 -V'
    - '&$env:PYTHON37 -m pip install --upgrade pip'
    - '&$env:PYTHON37 -m pip install --upgrade https://github.com/josephsl/wxpy32whl/blob/main/wxPython-4.2.0-cp37-cp37m-win32.whl?raw=true'
    - '&$env:PYTHON37 -m pip install --upgrade -r requirements.txt'
  stage: build
  interruptible: true
  script:
    # Create html documentation firstly.
    - cd doc
    - '&$env:PYTHON37 documentation_importer.py'
    - cd ..\src
    - '&$env:PYTHON37 ..\doc\generator.py'
    - '&$env:PYTHON37 write_version_data.py'
    - New-Item "appkeys.py" -ItemType File -Value "twitter_api_key='$TWITTER_API_KEY'`ntwitter_api_secret='$TWITTER_API_SECRET'"
    - '&$env:PYTHON37 setup.py build'
    - cd ..
    - mkdir artifacts
    - cd scripts
    - '&$env:PYTHON37 make_archive.py'
    - cd ..
    - move src/twblue.zip artifacts/twblue_windows7_x86.zip
  only:
    - tags
  artifacts:
    paths:
      - artifacts
    expire_in: 1 day

generate_versions:
  stage: make_installer
  tags:
    - shared-windows
    - windows
    - windows-1809
  before_script:
    - Set-Variable -Name "time" -Value (date -Format "%H:%m")
    - echo ${time}
    - echo "started by ${GITLAB_USER_NAME}"
    - choco install nsis -y -ForceX86
  script:
    - move artifacts/TWBlue scripts/
    - move artifacts/TWBlue64 scripts/
    - move artifacts/twblue.nsi scripts/installer.nsi
    - cd scripts
    - '&$env:NSIS installer.nsi'
    - move twblue_setup.exe ../artifacts
  only:
    - tags
  artifacts:
    paths:
      - artifacts
    expire_in: 1 day

upload:
  stage: upload
  tags:
    - linux
  image: python
  interruptible: true
  script:
    - cd artifacts
    - python ../scripts/upload.py
  only:
    - tags
    - schedules