ceph-csi/scripts/lint-extras.sh
Madhu Rajanna 3482cb7091 ci: updated shell script to run individual test
Earlier we were running all the linter for non-go
files in one short, this wont be helpful for the
users who want to run particular tests.

now the Makefile as different target to
run separate lint test for different type
of non-go files.

Fixes: #979

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2020-05-14 16:54:19 +00:00

97 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# vim: set ts=4 sw=4 et :
# This script will be used to lint non-go files
# Usage: ./scripts/lint-extras.sh <command>
# Available commands are [lint-shell lint-yaml lint-markdown lint-helmlint-all ]
set -e
# Run checks from root of the repo
scriptdir="$(dirname "$(realpath "$0")")"
cd "$scriptdir/.."
# run_check <file_regex> <checker_exe> [optional args to checker...]
# Pass empty regex when no regex is needed
function run_check() {
local regex="$1"
shift
local exe="$1"
shift
if [ -x "$(command -v "${exe}")" ]; then
if [ -z "${regex}" ]; then
"$exe" "$@"
else
find . -path ./vendor -prune -o -regextype egrep -iregex "$regex" -print0 |
xargs -0rt -n1 "$exe" "$@"
fi
elif [ "$all_required" -eq 0 ]; then
echo "Warning: $exe not found... skipping some tests."
else
echo "FAILED: All checks required, but $exe not found!"
exit 1
fi
}
all_required=0
function lint_markdown() {
# markdownlint: https://github.com/markdownlint/markdownlint
# https://github.com/markdownlint/markdownlint/blob/master/docs/RULES.md
# Install via: gem install mdl
run_check '.*\.md' mdl --style scripts/mdl-style.rb
}
function lint_shell() {
# Install via: dnf install shellcheck
run_check '.*\.(ba)?sh' shellcheck --external-sources
run_check '.*\.(ba)?sh' bash -n
}
function lint_yaml() {
# Install via: pip install yamllint
# disable yamlint check for helm charts
run_check '.*\.ya?ml' yamllint -s -d "{extends: default, rules: {line-length: {allow-non-breakable-inline-mappings: true}},ignore: charts/*/templates/*.yaml}"
}
function lint_helm() {
# Install via: https://github.com/helm/helm/blob/master/docs/install.md
run_check '' helm lint --namespace=test charts/*
}
function lint_all() {
# runs all checks
all_required=1
lint_shell
lint_yaml
lint_markdown
lint_helm
}
case "${1:-}" in
lint-shell)
lint_shell
;;
lint-yaml)
lint_yaml
;;
lint-markdown)
lint_markdown
;;
lint-helm)
lint_helm
;;
lint-all)
lint_all
;;
*)
echo " $0 [command]
Available Commands:
lint-shell Lint shell files
lint-yaml Lint yaml files
lint-markdown Lint markdown files
lint-helm Lint helm charts
lint-all Run lint on all non-go files
" >&2
;;
esac