mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-12-23 13:30:23 +00:00
3482cb7091
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>
97 lines
2.4 KiB
Bash
Executable File
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
|