# Jobs to build the two channels in Socializer.
# Currently using python 3.7.7
variables:
  PYTHON3_32: "C:\\python37-32\\python.exe"
  PYTHON3_64: "C:\\python37-64\\python.exe"
  NSIS: "C:\\nsis\\makensis.exe"

.configure_environment: &configure_environment
  tags:
    - windows10
  before_script:
    - '&$env:PYTHON3_32 -V'
    - '&$env:PYTHON3_32 -m pip install --upgrade pip'
    - '&$env:PYTHON3_32 -m pip install --upgrade -r requirements.txt'
    - '&$env:PYTHON3_32 -m pip uninstall enum34 -y'

# Create documentation in all available languages so we'll have it at http://socializer.su/documentation
# this job is triggered on every commit to master, so we always will display the latest available version of the documentation in the website.
documentation:
  type: deploy
  tags:
    - windows10
  script:
    ### Dependencies.
    - '&$env:PYTHON3_32 -m pip install --upgrade babel markdown'
    # generate all html documents first.
    - copy changelog.md doc\changelog.md
    - cd doc
    - '&$env:PYTHON3_32 documentation_importer.py'
    - cd ..\src
    - '&$env:PYTHON3_32 ..\doc\generator.py'
    - 'move documentation ..\'
    # Update interface and documentation translation catalogs.
    - '&$env:PYTHON3_32 setup.py extract_messages -F babel.cfg --input-dirs . --output-file socializer.pot'
    - '&$env:PYTHON3_32 setup.py update_catalog --no-fuzzy-matching --domain socializer --output-dir locales --input-file socializer.pot'
    - cd ..\doc
    - '&$env:PYTHON3_32 translate.py'
    - cd ..\src
    - 'move locales ..\'
  only:
    - master
  artifacts:
    paths:
    - documentation
    - locales
    name: socializer_documentation
    expire_in: 30 days

### Updates all translation templates for weblate
update_translation_templates:
  type: deploy
  tags:
    - windows10
  script:
    - '&$env:PYTHON3_32 -m pip install --upgrade babel'
    - copy changelog.md doc\changelog.md
    - cd doc
    - '&$env:PYTHON3_32 documentation_importer.py'
    - cd ..\src
    - '&$env:PYTHON3_32 setup.py extract_messages -F babel.cfg --input-dirs . --output-file ..\scripts\socializer.pot'
    - cd ..\doc
    - '&$env:PYTHON3_32 translate.py'
    - cd ..
    - 'git config user.name "Windows runner"'
    - 'git config  user.email "manuel@manuelcortez.net"'
    - 'git add scripts'
    - 'git remote set-url --push origin git@code.manuelcortez.net:$env:CI_PROJECT_PATH'
    - 'git commit -m "Updated locales [skip ci]"'
    - 'git push origin HEAD:$env:CI_COMMIT_REF_NAME'
  only:
    - schedules

alpha32:
  <<: *configure_environment
  type: deploy
  script:
    - copy changelog.md doc\changelog.md
    - cd doc
    - '&$env:PYTHON3_32 documentation_importer.py'
    - cd ..\src
    - '&$env:PYTHON3_32 ..\doc\generator.py'
    - '&$env:PYTHON3_32 write_version_data.py'
    - '&$env:PYTHON3_32 setup.py build'
    - '&$env:NSIS installer_alpha.nsi'
    - cd ..
    - move src\socializer* .
    - cd scripts
    - '&$env:PYTHON3_32 prepare_zipversion.py'
    - cd ..
    - move src\socializer.zip socializer_x86_alpha.zip
    - '&$env:PYTHON3_32 scripts/generate_update_file.py'
    - '&$env:PYTHON3_32 scripts/upload.py'
    - move socializer_x86_alpha.zip socializer_x86.zip
  only:
    - master

# Generates a new stable version of the application every tag.
stable:
  <<: *configure_environment
  type: deploy
  script:
    - copy changelog.md doc\changelog.md
    - cd doc
    - '&$env:PYTHON3_32 documentation_importer.py'
    - cd ..\src
    - '&$env:PYTHON3_32 ..\doc\generator.py'
    - '&$env:PYTHON3_32 write_version_data.py'
    - '&$env:PYTHON3_32 setup.py build'
    - '&$env:NSIS installer.nsi'
    - cd ..
    - move src\socializer* .
    - cd scripts
    - '&$env:PYTHON3_32 prepare_zipversion.py'
    - cd ..
    - move src\socializer.zip socializer_x86.zip
    - '&$env:PYTHON3_32 scripts/upload.py'
  only:
    - tags