image: ubuntu:16.04

stages:
  - pre-build
  - build
  - deploy
  - test

.linux_set_path: &linux_set_path_def
  before_script:
    - export PATH=$(pwd)/bin:$PATH
  tags:
    - linux

.windows_set_path: &win_set_path_def
  before_script:
    - set PATH=%CD%\bin;%PATH%
  tags:
    - windows

build-linux:
  stage: build
  script:
    - sh ci/build.sh
  artifacts:
    paths:
      - bin/nim
      - bin/nimd
      - compiler/nim
      - koch
    expire_in: 1 week
  tags:
    - linux

build-windows:
  stage: build
  script:
    - ci\build.bat
  artifacts:
    paths:
      - bin\nim.exe
      - bin\nimd.exe
      - compiler\nim.exe
      - koch.exe
    expire_in: 1 week
  tags:
    - windows

deploy-windows:
  stage: deploy
  script:
    - koch.exe winrelease
  artifacts:
    paths:
      - build/*.exe
    expire_in: 1 week
  tags:
    - windows
    - fast

test-linux:
  stage: test
  <<: *linux_set_path_def
  script:
    - sh ci/deps.sh
    - nim c --taintMode:on tests/testament/tester
    - tests/testament/tester --pedantic all
  tags:
    - linux

test-windows:
  stage: test
  <<: *win_set_path_def
  script:
    - call ci\deps.bat
    - nim c --taintMode:on tests\testament\tester
    - tests\testament\tester.exe --pedantic all
  tags:
    - windows
    - fast

.csources: &csources_definition
  stage: test
  script:
    - apt-get update -qq
    - apt-get install -y -qq build-essential git
    - nim -v
    - ./koch csources
    - ./koch xz
  artifacts:
    paths:
      - build/c_code

csources-linux:
  <<: *csources_definition
  <<: *linux_set_path_def