summaryrefslogtreecommitdiff
path: root/Build/source/libs/libpng/libpng-src/ci/ci_lint_ci.sh
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/libpng/libpng-src/ci/ci_lint_ci.sh')
-rw-r--r--Build/source/libs/libpng/libpng-src/ci/ci_lint_ci.sh88
1 files changed, 88 insertions, 0 deletions
diff --git a/Build/source/libs/libpng/libpng-src/ci/ci_lint_ci.sh b/Build/source/libs/libpng/libpng-src/ci/ci_lint_ci.sh
new file mode 100644
index 00000000000..123ed482f10
--- /dev/null
+++ b/Build/source/libs/libpng/libpng-src/ci/ci_lint_ci.sh
@@ -0,0 +1,88 @@
+#!/usr/bin/env bash
+set -e
+
+# Copyright (c) 2019-2024 Cosmin Truta.
+#
+# Use, modification and distribution are subject to the MIT License.
+# Please see the accompanying file LICENSE_MIT.txt
+#
+# SPDX-License-Identifier: MIT
+
+# shellcheck source="ci/lib/ci.lib.sh"
+source "$(dirname "$0")/lib/ci.lib.sh"
+cd "$CI_TOPLEVEL_DIR"
+
+CI_SHELLCHECK="$(command -v shellcheck || true)"
+CI_YAMLLINT="$(command -v yamllint || true)"
+CI_LINT_COUNTER=0
+
+function ci_lint_ci_config_files {
+ ci_info "linting: CI config files"
+ local MY_FILE
+ if [[ -x $CI_YAMLLINT ]]
+ then
+ ci_spawn "$CI_YAMLLINT" --version
+ for MY_FILE in "$CI_TOPLEVEL_DIR"/.*.yml
+ do
+ ci_spawn "$CI_YAMLLINT" --strict "$MY_FILE" ||
+ CI_LINT_COUNTER=$((CI_LINT_COUNTER + 1))
+ done
+ else
+ ci_warn "program not found: 'yamllint'; skipping checks"
+ fi
+}
+
+function ci_lint_ci_scripts {
+ ci_info "linting: CI scripts"
+ local MY_FILE
+ if [[ -x $CI_SHELLCHECK ]]
+ then
+ ci_spawn "$CI_SHELLCHECK" --version
+ for MY_FILE in "$CI_SCRIPT_DIR"/*.sh
+ do
+ ci_spawn "$CI_SHELLCHECK" -x "$MY_FILE" ||
+ CI_LINT_COUNTER=$((CI_LINT_COUNTER + 1))
+ done
+ else
+ ci_warn "program not found: 'shellcheck'; skipping checks"
+ fi
+}
+
+function ci_lint_ci_scripts_license {
+ ci_info "linting: CI scripts license"
+ ci_spawn grep -F "MIT License" ci/LICENSE_MIT.txt || {
+ ci_warn "bad or missing CI license file: '$CI_SCRIPT_DIR/LICENSE_MIT.txt'"
+ CI_LINT_COUNTER=$((CI_LINT_COUNTER + 1))
+ }
+}
+
+function usage {
+ echo "usage: $CI_SCRIPT_NAME"
+ exit 0
+}
+
+function main {
+ local opt
+ while getopts ":" opt
+ do
+ # This ain't a while-loop. It only pretends to be.
+ [[ $1 == -[?h]* || $1 == --help ]] && usage
+ ci_err "unknown option: '$1'"
+ done
+ shift $((OPTIND - 1))
+ # And... go!
+ [[ $# -eq 0 ]] || ci_err "unexpected argument: '$1'"
+ ci_lint_ci_config_files
+ ci_lint_ci_scripts
+ ci_lint_ci_scripts_license
+ if [[ $CI_LINT_COUNTER -eq 0 ]]
+ then
+ ci_info "success!"
+ exit 0
+ else
+ ci_info "failed on $CI_LINT_COUNTER file(s)"
+ exit 1
+ fi
+}
+
+main "$@"