---
stages:
  - puppet

puppet-lint:
  tags: [puppet]
  stage: puppet
  image: ananace/puppetlint:latest-checks
  script:
    - puppet-lint
      --no-documentation-check
      --with-filename
      --config .puppet-lint.rc
      --log-format '%{path}:%{line}:%{check}:%{KIND}:%{message}'
      manifests

puppet-parser:
  tags: [puppet]
  stage: puppet
  image: ananace/puppetlint:latest
  script:
    - puppet parser validate
      --strict_variables
      --render-as s
      --modulepath="$(pwd)/.."
      manifests
    - find templates -type f -name '*.epp' -print0 |
      xargs -0r puppet epp validate --render-as s
    # TODO: Remove --no-strict-license once a license is in place
    - metadata-json-lint
      --no-strict-license
      metadata.json

ruby:
  tags: [puppet]
  stage: puppet
  image: ruby:alpine
  script:
    - "[ -d lib ] && find lib -type f -name '*.rb' -print0 |
      xargs -0rn1 sh -c 'printf \"$0: \"; cat $0 | ruby -c 2>&1'"
    - "[ -d templates ] && find templates -type f -name '*.erb' -print0 |
      xargs -0rn1 sh -c 'printf \"$0: \"; erb -PxT \"-\" \"$0\" | ruby -c 2>&1'"
