#!/bin/bash
#
# PBA Gitlab CI info printer
#
# (C) ITEG IT-Engineers GmbH 2010-2022
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# 
#   http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# pba-gitlab-ci-intra [-f]
#   prints eventual non-empty $CI* variables of interest
#   -b triggers short info, without -b pretty much is printed
#   -f triggers full info, prints A LOT


# $CI* reference: https://docs.gitlab.com/ee/ci/variables/predefined_variables.html

CHATTYNESS="$1"


#test -n "${CI}" && \
#  test "${CHATTYNESS}" == "-f" && \
#  echo "CI: ${CI}"

if [ -z "$CI" ] ; then
  test "${CHATTYNESS}" != "-b" && \
    echo "\$CI not set, probably called outside Gitlab CI"
elif [ "$CI" != "true" ] ; then
  test "${CHATTYNESS}" != "-b" && \
    echo "\$CI not set to 'true', probably called outside Gitlab CI"
fi


test -n "${CI_COMMIT_AUTHOR}" && \
  echo "CI commit author: ${CI_COMMIT_AUTHOR}"
test -n "${CI_COMMIT_TITLE}" && \
  echo "CI commit title: ${CI_COMMIT_TITLE}"
test -n "${CI_COMMIT_DESCRIPTION}" && \
  test "${CHATTYNESS}" != "-b" && \
  echo "CI commit description: ${CI_COMMIT_DESCRIPTION}"
test -n "${CI_COMMIT_MESSAGE}" && \
  test "${CHATTYNESS}" == "-f" && \
  echo "CI commit message: ${CI_COMMIT_MESSAGE}"

test -n "${CI_COMMIT_BRANCH}" && \
  echo "CI commit branch: ${CI_COMMIT_BRANCH}"
test -n "${CI_COMMIT_TAG}" && \
  echo "CI commit tag: ${CI_COMMIT_TAG}"

test -n "${CI_COMMIT_REF_NAME}" && \
  echo "CI commit ref. name: ${CI_COMMIT_REF_NAME}"

#test -n "${CI_COMMIT_SHORT_SHA}" && \
#  test "${CHATTYNESS}" != "-b" && \
#  echo "CI commit short hash: ${CI_COMMIT_SHORT_SHA}"
test -n "${CI_COMMIT_SHA}" && \
  echo "CI commit hash: ${CI_COMMIT_SHA}"
#test -n "${CI_COMMIT_BEFORE_SHA}" && \
#  test "${CI_COMMIT_BEFORE_SHA}" != "0000000000000000000000000000000000000000" && \
#  echo "CI commit hash: ${CI_COMMIT_BEFORE_SHA}"
test -n "${CI_COMMIT_TIMESTAMP}" && \
  echo "CI commit timestamp: ${CI_COMMIT_TIMESTAMP}"

test -n "${CI_MERGE_REQUEST_ID}" && \
  echo "CI merge request id: ${CI_MERGE_REQUEST_ID}"
test -n "${CI_MERGE_REQUEST_APPROVED}" && \
  echo "CI merge request approved: ${CI_MERGE_REQUEST_APPROVED}"

test -n "${GITLAB_USER_EMAIL}" && \
  echo "CI user e-mail: ${GITLAB_USER_EMAIL}"
test -n "${GITLAB_USER_NAME}" && \
  echo "CI user name: ${GITLAB_USER_NAME}"

test -n "${CI_PIPELINE_ID}" && \
  echo "CI pipeline id: ${CI_PIPELINE_ID}"
test -n "${CI_PIPELINE_SOURCE}" && \
  test "${CHATTYNESS}" != "-b" && \
  echo "CI pipeline source: ${CI_PIPELINE_SOURCE}"
test -n "${CI_PIPELINE_TRIGGERED}" && \
  test "${CHATTYNESS}" != "-b" && \
  echo "CI pipeline triggered: ${CI_PIPELINE_TRIGGERED}"
test -n "${CI_PIPELINE_CREATED_AT}" && \
  echo "CI pipeline created at: ${CI_PIPELINE_CREATED_AT}"

test -n "${CI_JOB_NAME}" && \
  echo "CI job name: ${CI_JOB_NAME}"
test -n "${CI_JOB_STARTED_AT}" && \
  echo "CI job started at: ${CI_JOB_STARTED_AT}"
test -n "${CI_JOB_ID}" && \
  echo "CI job id: ${CI_JOB_ID}"
test -n "${CI_JOB_IMAGE}" && \
  echo "CI job image: ${CI_JOB_IMAGE}"
test -n "${CI_JOB_MANUAL}" && \
  test "${CHATTYNESS}" != "-b" && \
  echo "CI job manual: ${CI_JOB_MANUAL}"

test -n "${CI_ENVIRONMENT_NAME}" && \
  echo "CI environment name: ${CI_ENVIRONMENT_NAME}"
test -n "${CI_ENVIRONMENT_ACTION}" && \
  test "${CHATTYNESS}" != "-b" && \
  echo "CI environment action: ${CI_ENVIRONMENT_ACTION}"

test "${CHATTYNESS}" == "-b" && exit 0

test -n "${CI_RUNNER_TAGS}" && \
  echo "CI runner tags: ${CI_RUNNER_TAGS}"
test -n "${CI_RUNNER_VERSION}" && \
  echo "CI runner version: ${CI_RUNNER_VERSION}"
test -n "${CI_RUNNER_ID}" && \
  test "${CHATTYNESS}" == "-f" && \
  echo "CI runner id: ${CI_RUNNER_ID}"
test -n "${CI_RUNNER_REVISION}" && \
  test "${CHATTYNESS}" == "-f" && \
  echo "CI runner revision: ${CI_RUNNER_REVISION}"

test -n "${GITLAB_USER_LOGIN}" && \
  echo "Gitlab user login: ${GITLAB_USER_LOGIN}"
test -n "${GITLAB_USER_NAME}" && \
  echo "Gitlab user name: ${GITLAB_USER_NAME}"
test -n "${GITLAB_USER_EMAIL}" && \
  echo "Gitlab user email: ${GITLAB_USER_EMAIL}"

test "${CHATTYNESS}" == "-f" || exit 0

test -n "${CI_KUBERNETES_ACTIVE}" && \
  echo "CI kubernetes active: ${CI_KUBERNETES_ACTIVE}"
test -n "${CI_NODE_INDEX}" && \
  echo "CI node index: ${CI_NODE_INDEX}"
test -n "${CI_NODE_TOTAL}" && \
  echo "CI node total: ${CI_NODE_TOTAL}"

test -n "${CI_PROJECT_TITLE}" && \
  echo "CI project title: ${CI_PROJECT_TITLE}"
test -n "${CI_PROJECT_NAME}" && \
  echo "CI project name: ${CI_PROJECT_NAME}"
test -n "${CI_PROJECT_NAMESPACE}" && \
  echo "CI project namespace: ${CI_PROJECT_NAMESPACE}"
test -n "${CI_PROJECT_PATH}" && \
  echo "CI project path: ${CI_PROJECT_PATH}"
test -n "${CI_PROJECT_PATH_SLUG}" && \
  echo "CI project path slug: ${CI_PROJECT_PATH_SLUG}"
test -n "${CI_PROJECT_ID}" && \
  echo "CI project id: ${CI_PROJECT_ID}"

