dist: xenial
language: php

env:
  global:
    - DEFAULT_COMPOSER_FLAGS="--no-interaction --no-suggest --prefer-source"
    - XDEBUG="false"
    # generated with travis encrypt -r vimeo/psalm --org GITHUB_TOKEN="<secret oauth token>"
    - secure: Ayjp10v6IWeJX3ThWvPxlv0gkuTuvu30lsdQCjop+vS0Kv+6/IEOdSOxtm0tEWacq9EFCViWRKh9zxiwPtoi0wxGdzGGws+UtIJxew6Vy8HDCEH8nY4k50eElKUWI4YhVbiSdZEZ+Bd9kO0qGEBH9iWh8Tc8MP2Hklx7lOf+zUTSm8vpv+idcCxwGCvQMaMc5NhfnkgGq95/UU3iOvCi5/wkIFnSnoccxmZE2zsxI1e355ipa0uoe8/Ml6vK0NrZ0aBZwZfItsIuhRcL4Cm5kyar+Ao/mn9Zw8CHbfESrIMomRI7ZxwPNFj+sR/wCvEasIGHRxH8B9F4d8SmAoHR1CrmM/zyWRon73CfRb56M4VGG1hyqTr1GYHpBgZKSOYA8TKyOjD8EHGvevfHpJoGVNxf0+vAfdizlVJvkYhzSz/VjpOZO8rfOct4deNcpCVuVGg5uOGeg5P7coVniGHLHTm3JozK9Ia+ZLePtr3l/NuoW5dXVF1fdroCyQS2X0VSXALnnTPzcIQYsmpCk8yJ8uXorxj4dJHhstyll1jemJjxT7HJ1ASPUOTsPu9u9EoBDHQxOGa5b2/7chyV+EhrYV899RKZ4xEPzpC619sWgtZJci3oLcebU1BY42pIr94UqtwcJKhriwV72VpKvCG/eqOKLhXq355TYRx2dK05a5w=

cache:
  directories:
    - ./vendor

before_install:
    # determine INI file
    - composer config --global discard-changes true
    - export INI_DIR=~/.phpenv/versions/$(phpenv version-name)/etc/conf.d
    - export INI=$INI_DIR/travis.ini
    - if [[ "$TRAVIS_TAG" = '' ]]; then export COMPOSER_ROOT_VERSION=dev-master; fi
    # disable default memory limit
    - echo memory_limit = 2G >> $INI
    - if [[ "$XDEBUG" = 'false' && -f $INI_DIR/xdebug.ini ]]; then phpenv config-rm xdebug.ini; fi
    - if [[ $TRAVIS_PHP_VERSION = nightly ]]; then export DEFAULT_COMPOSER_FLAGS="$DEFAULT_COMPOSER_FLAGS --ignore-platform-reqs"; fi
    - composer validate
    - composer clear-cache


install:
  - if [[ "$DEPS" = 'high' ]]; then travis_retry composer $DEFAULT_COMPOSER_FLAGS update; fi
  - if [[ "$DEPS" = 'low' ]]; then travis_retry composer $DEFAULT_COMPOSER_FLAGS --prefer-lowest --prefer-stable update; fi

script:
  - vendor/bin/phpunit
  - ./psalm

# Additional stages
jobs:
  fast_finish: true
  include:
    - php: 7.1.3
      env: DEPS="low"

    - php: 7.1.3
      env: DEPS="high"

    - php: 7.4
      env: DEPS="low"

    - php: 7.4
      env: DEPS="high"

    - php: 7.3
      env: DEPS="high"
      script:
        - vendor/bin/phpcs

    - php: 7.3
      env: DEPS="high"
      script:
        - composer require --dev maglnet/composer-require-checker:^2.0.0
        - ./vendor/bin/composer-require-checker check --config-file=bin/composer-require-checker-config.json ./composer.json

    - php: 7.3
      env: DEPS="high"
      script: bin/build-phar.sh
      deploy:
        # deploy tagged releases to github releases page
        - provider: releases
          skip_cleanup: true
          on:
            tags: true
            repo: vimeo/psalm
          api_key: $GITHUB_TOKEN
          file:
            - build/psalm.phar
            - build/psalm.phar.asc

        # deploy built phar to github.com/psalm/phar repo for all branches and tags,
        # but not for pull requests
        - provider: script
          skip_cleanup: true
          on:
            all_branches: true
            condition: ' "$TRAVIS_PULL_REQUEST" = "false" '
          script: bin/travis-deploy-phar.sh
