.test_definition: &test_definition
    services:
       - chill/database:latest
     
    before_script:
       - echo "PHP version is $(php --version)"
       - composer config github-oauth.github.com $GITHUB_TOKEN
       - if [ $CI_BUILD_REF_NAME = "1.0" ] ; then export COMPOSER_ROOT_VERSION="1.0-dev"; else export COMPOSER_ROOT_VERSION="dev-master"; fi
       - php -d memory_limit=-1 /usr/local/bin/composer install --no-interaction 
       - cp  Resources/test/Fixtures/App/app/config/parameters.gitlab-ci.yml Resources/test/Fixtures/App/app/config/parameters.yml
       - php Resources/test/Fixtures/App/app/console --env=test cache:warmup
       - php Resources/test/Fixtures/App/app/console doctrine:migrations:migrate --env=test --no-interaction
       - php Resources/test/Fixtures/App/app/console doctrine:fixtures:load --env=test --no-interaction
       
stages:
   - deploy
   - test
   - build-doc
   - deploy-doc
   
test:php-7.2:
   stage: test
   image: chill/ci-image:php-7.2
   <<: *test_definition
   script: vendor/bin/phpunit

deploy-packagist:    
    stage: deploy    
    image: chill/ci-image:php-7.2   
    before_script:        
        # test that PACKAGIST USERNAME and PACKAGIST_TOKEN variable are set        
        - if [ -z ${PACKAGIST_USERNAME+x} ]; then echo "Please set PACKAGIST_USERNAME variable"; exit -1;  fi        
        - if [ -z ${PACKAGIST_TOKEN+x} ]; then echo "Please set PACKAGIST_TOKEN variable";  exit -1; fi    
    script:        
        - STATUSCODE=$(curl -XPOST -H'content-type:application/json' "https://packagist.org/api/update-package?username=$PACKAGIST_USERNAME&apiToken=$PACKAGIST_TOKEN" -d"{\"repository\":{\"url\":\"$CI_PROJECT_URL.git\"}}" --silent --output /dev/stderr --write-out "%{http_code}")        
        - if [ $STATUSCODE = "202" ]; then exit 0; else exit $STATUSCODE; fi
        
# deploy documentation
api-doc-build:
   stage: build-doc
   environment: api-doc
   image: chill/ci-image:php-7.2
   before_script:
      - mkdir api-doc
   script: apigen generate --destination api-doc/$CI_BUILD_REF_NAME/$CI_PROJECT_NAME
   artifacts:
      paths:
         - "api-doc/"
      name: api
      expire_in: '2h'
   only:
      - master
      - tags

api-doc-deploy:
   stage: deploy-doc
   image: pallet/swiftclient:latest
   before_script:
        # test that CONTAINER_API variable is set        
        - if [ -z ${CONTAINER_API+x} ]; then echo "Please set CONTAINER_API variable"; exit -1;  fi
        # go to api-doc to have and url with PROJECT/BUILD
        - cd api-doc
        # upload, and keep files during 1 year
   script: "swift upload --header \"X-Delete-After: 31536000\"  $CONTAINER_API $CI_BUILD_REF_NAME/$CI_PROJECT_NAME"
   only:
      - master
      - tags
      
