#!/bin/bash -eu

export PROJECT_DIR="$(cd $(dirname $0)/.. && pwd)"

function main() {
  local PIPELINE=${1}

  if [[ -r "${PROJECT_DIR}/ci/templates/${PIPELINE}.yml" ]]; then
    cat > "${PROJECT_DIR}/ci/pipelines/${PIPELINE}.yml" <<EOF
## ======================================================================
## GENERATED FILE. DO NOT EDIT
## Generated by running $0 $PIPELINE from $(pwd | sed 's@'$(echo ~)'@~@')
## ======================================================================

EOF

    REVISION="$(git remote get-url origin) $(git rev-parse HEAD) $(git ls-files --full-name "${PROJECT_DIR}/ci/templates/${PIPELINE}.yml")"
    if [[ -n $(git status --porcelain) ]] ; then
      REVISION="$REVISION \e[31mdirty\e[0m"
    fi

    ytt template \
      -f "${PROJECT_DIR}/ci/templates/${PIPELINE}.yml" \
      -f "${PROJECT_DIR}/ci/inputs/${PIPELINE}.yml" \
      -f "${PROJECT_DIR}/ci/overlays/" \
      -v "pipeline_revision=$REVISION" \
      >> "${PROJECT_DIR}/ci/pipelines/${PIPELINE}.yml"
  fi

  if [[ ! -r "${PROJECT_DIR}/ci/pipelines/${PIPELINE}.yml" ]]; then
    echo "Invalid pipeline: ${PIPELINE}."
    exit 1
  fi

  fly -t relint-ci sp -p "${PIPELINE}" -c "${PROJECT_DIR}/ci/pipelines/${PIPELINE}.yml"
}

main "$@"
