stages:
  - lint
  - codestyle
  - transifex
  - tarballs
  - trigger

## Stage lint

# Perl lint
create_perl_lint_rapport:
  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:buster
  stage: lint
  only:
    - branches
  script:
    - perl -cW contrib/bin/fusiondirectory-setup

# PHP lint (stretch)
create_php_lint_rapport:
  image: registry.fusiondirectory.org/fusiondirectory/fd/phpcodesniffer-cli:buster
  stage: lint
  only:
    - branches
  script:
    - find . -type f -name '*.php' -o -name '*.inc' -print0 | xargs -0 -n1 php -l

# generate man pages to test validity
create_manpages_lint_report:
  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:buster
  stage: lint
  only:
    - branches
  script:
    - pod2man -c "FusionDirectory Documentation" -r "FusionDirectory 1.3" contrib/bin/fusiondirectory-setup contrib/man/fusiondirectory-setup.1
    - pod2man -c "FusionDirectory Documentation" -r "FusionDirectory 1.3" contrib/man/fusiondirectory.conf.pod contrib/man/fusiondirectory.conf.5
    - lexgrog contrib/man/fusiondirectory-setup.1
    - lexgrog contrib/man/fusiondirectory.conf.5

## Stage codestyle

# Generate perlcritic rapport
create_perlcritic_rapport:
  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:buster
  stage: codestyle
  only:
    - branches
  script:
    - cp contrib/bin/fusiondirectory-setup contrib/bin/fusiondirectory-setup.pl
    - perlcritic --quiet --verbose "%f~|~%s~|~%l~|~%c~|~%m~|~%e~|~%p~||~%n" contrib/bin

# PHP codesniffer
create_php_code_sniffer_rapport:
  image: registry.fusiondirectory.org/fusiondirectory/fd/phpcodesniffer-cli:buster
  stage: codestyle
  only:
    - branches
  script:
    - test -d ../dev-tools/ && rm -Rf ../dev-tools/
    - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git ../dev-tools
    - find . -type f -name '*.php' -o -name '*.inc' > ./filelist
    - /root/.composer/vendor/bin/phpcs --standard=../dev-tools/php-codesniffer-rules/FDStandard/ruleset.xml --file-list=./filelist
    - git clone --depth 1 https://gitlab-ci:$GITLAB_CI_TOKEN@gitlab.fusiondirectory.org/php-tools/PHPCompatibility.git ../PHPCompatibility
    - git clone --depth 1 https://gitlab-ci:$GITLAB_CI_TOKEN@gitlab.fusiondirectory.org/php-tools/PHPCSUtils.git ../PHPCSUtils
    - /root/.composer/vendor/bin/phpcs --config-set installed_paths /builds/fusiondirectory/PHPCompatibility,/builds/fusiondirectory/PHPCSUtils
    - /root/.composer/vendor/bin/phpcs --standard=PHPCompatibility --runtime-set testVersion 7.3-7.4 --file-list=./filelist

# phpstan
create_phpstan_rapport:
  image: registry.fusiondirectory.org/fusiondirectory/fd/phpstan:buster
  stage: codestyle
  only:
    - branches
  script:
    - test -d ../dev-tools/ && rm -Rf ../dev-tools/
    - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git ../dev-tools
    - composer global require phpstan/phpstan=0.12.94
    - cp ../dev-tools/phpstan/fusiondirectory/1.4-dev/*.neon .
    - composer global require phpstan/phpstan=0.12.94
    - /root/.composer/vendor/bin/phpstan analyse -c phpstan.neon

# fusiondirectory-update-locale
fusiondirectory-update-locale:
  image: registry.fusiondirectory.org/fusiondirectory/fd/transifex-cli:buster
  stage: transifex
  only:
    - /^1.*$/
  script:
    - test -d ../dev-tools/ && rm -Rf ../dev-tools/
    - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git ../dev-tools
    - ../dev-tools/locale-scripts/fusiondirectory-update-locale -g

# Update transifex
update-transifex:
  image: registry.fusiondirectory.org/fusiondirectory/fd/transifex-cli:buster
  stage: transifex
  only:
    - /^1.*$/
  script:
    - test -d ../dev-tools/ && rm -Rf ../dev-tools/
    - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git ../dev-tools
    - echo $'[https://www.transifex.com]\nhostname = https://www.transifex.com\nusername = '"$TRANSIFEX_USER"$'\npassword = '"$TRANSIFEX_PASSWORD"$'\ntoken = '"$TRANSIFEX_API_TOKEN"$'\n' > ~/.transifexrc
    - tx pull -a -f
    - ../dev-tools/locale-scripts/fusiondirectory-update-locale -g
    - tx push -s -t --skip --no-interactive

build-tarballs:
  stage: tarballs
  only:
    - 1.4-dev
  script:
    - mkdir ../fusiondirectory-1.4/
    - mv ./* ../fusiondirectory-1.4/
    - mv  ../fusiondirectory-1.4/ ./
    - tar -cvzf fusiondirectory-1.4.tar.gz *
  artifacts:
    paths:
      - fusiondirectory-1.4.tar.gz
    expire_in: 30d

trigger-plugins:
  variables:
    GROUP: $GROUP
    BRANCH_CORE: $CI_COMMIT_REF_NAME
    BRANCH_PLUGIN: $CI_COMMIT_REF_NAME
    BRANCH_BUILD_DEBIAN_STRETCH: $BRANCH_BUILD_DEBIAN_STRETCH
    BRANCH_BUILD_DEBIAN_BUSTER: $BRANCH_BUILD_DEBIAN_BUSTER
    BRANCH_BUILD_CENTOS_7: $BRANCH_BUILD_CENTOS_7
  stage: trigger
  only:
    - 1.4-dev
  trigger:
    project: fusiondirectory/fd-plugins
    branch: $CI_COMMIT_REF_NAME