mirror of
https://github.com/super-linter/super-linter.git
synced 2024-11-22 00:31:07 -05:00
feat: support arbitrary shellcheck config paths (#5571)
- Support passing an arbitrary path to the shellcheck configuration file with the BASH_CONFIG_FILE_NAME variable. This brings shellcheck in line with other linters that support configuration files. - Enable shellcheck external sources using a directive in the configuration file, so users can eventually override it if not needed. - Export command configuration variables that subprocesses might need. Close #5414
This commit is contained in:
parent
53361158a1
commit
c26430f868
5 changed files with 19 additions and 5 deletions
|
@ -193,6 +193,7 @@ You can configure super-linter using the following environment variables:
|
||||||
| **ANSIBLE_CONFIG_FILE** | `.ansible-lint.yml` | Filename for [Ansible-lint configuration](https://ansible.readthedocs.io/projects/lint/configuring/) (ex: `.ansible-lint`, `.ansible-lint.yml`) |
|
| **ANSIBLE_CONFIG_FILE** | `.ansible-lint.yml` | Filename for [Ansible-lint configuration](https://ansible.readthedocs.io/projects/lint/configuring/) (ex: `.ansible-lint`, `.ansible-lint.yml`) |
|
||||||
| **ANSIBLE_DIRECTORY** | `/ansible` | Flag to set the root directory for Ansible file location(s), relative to `DEFAULT_WORKSPACE`. Set to `.` to use the top-level of the `DEFAULT_WORKSPACE`. |
|
| **ANSIBLE_DIRECTORY** | `/ansible` | Flag to set the root directory for Ansible file location(s), relative to `DEFAULT_WORKSPACE`. Set to `.` to use the top-level of the `DEFAULT_WORKSPACE`. |
|
||||||
| **BASH_EXEC_IGNORE_LIBRARIES** | `false` | If set to `true`, shell files with a file extension and no shebang line are ignored when checking if the executable bit is set. |
|
| **BASH_EXEC_IGNORE_LIBRARIES** | `false` | If set to `true`, shell files with a file extension and no shebang line are ignored when checking if the executable bit is set. |
|
||||||
|
| **BASH_FILE_NAME** | `.shellcheckrc` | Filename for [Shellcheck](https://github.com/koalaman/shellcheck/blob/master/shellcheck.1.md#rc-files) |
|
||||||
| **BASH_SEVERITY** | `style` | Specify the minimum severity of errors to consider in shellcheck. Valid values in order of severity are error, warning, info and style. |
|
| **BASH_SEVERITY** | `style` | Specify the minimum severity of errors to consider in shellcheck. Valid values in order of severity are error, warning, info and style. |
|
||||||
| **CHECKOV_FILE_NAME** | `.checkov.yaml` | Configuration filename for Checkov. |
|
| **CHECKOV_FILE_NAME** | `.checkov.yaml` | Configuration filename for Checkov. |
|
||||||
| **CLANG_FORMAT_FILE_NAME** | `.clang-format` | Configuration filename for [clang-format](https://clang.llvm.org/docs/ClangFormatStyleOptions.html). |
|
| **CLANG_FORMAT_FILE_NAME** | `.clang-format` | Configuration filename for [clang-format](https://clang.llvm.org/docs/ClangFormatStyleOptions.html). |
|
||||||
|
|
|
@ -1 +1,5 @@
|
||||||
|
# Look for 'source'd files relative to the checked script
|
||||||
source-path=SCRIPTDIR
|
source-path=SCRIPTDIR
|
||||||
|
|
||||||
|
# Allow opening any 'source'd file, even if not specified as input
|
||||||
|
external-sources=true
|
||||||
|
|
|
@ -13,8 +13,12 @@
|
||||||
# shellcheck disable=SC2034 # Variable is referenced in other scripts
|
# shellcheck disable=SC2034 # Variable is referenced in other scripts
|
||||||
LINTER_COMMANDS_ARRAY_ANSIBLE=(ansible-lint -c "${ANSIBLE_LINTER_RULES}" "&& echo \"Linted: {}\"")
|
LINTER_COMMANDS_ARRAY_ANSIBLE=(ansible-lint -c "${ANSIBLE_LINTER_RULES}" "&& echo \"Linted: {}\"")
|
||||||
LINTER_COMMANDS_ARRAY_ARM=(pwsh -NoProfile -NoLogo -Command "\"Import-Module ${ARM_TTK_PSD1} ; \\\${config} = \\\$(Import-PowerShellDataFile -Path ${ARM_LINTER_RULES}) ; Test-AzTemplate @config -TemplatePath '{}'; if (\\\${Error}.Count) { exit 1 }\"")
|
LINTER_COMMANDS_ARRAY_ARM=(pwsh -NoProfile -NoLogo -Command "\"Import-Module ${ARM_TTK_PSD1} ; \\\${config} = \\\$(Import-PowerShellDataFile -Path ${ARM_LINTER_RULES}) ; Test-AzTemplate @config -TemplatePath '{}'; if (\\\${Error}.Count) { exit 1 }\"")
|
||||||
LINTER_COMMANDS_ARRAY_BASH=(shellcheck --color --external-sources)
|
LINTER_COMMANDS_ARRAY_BASH=(shellcheck --color --rcfile "${BASH_LINTER_RULES}")
|
||||||
|
# This check and the BASH_SEVERITY variable are needed until Shellcheck supports
|
||||||
|
# setting severity using its config file.
|
||||||
|
# Ref: https://github.com/koalaman/shellcheck/issues/2178
|
||||||
if [ -n "${BASH_SEVERITY}" ]; then
|
if [ -n "${BASH_SEVERITY}" ]; then
|
||||||
|
export BASH_SEVERITY
|
||||||
LINTER_COMMANDS_ARRAY_BASH+=(--severity="${BASH_SEVERITY}")
|
LINTER_COMMANDS_ARRAY_BASH+=(--severity="${BASH_SEVERITY}")
|
||||||
fi
|
fi
|
||||||
LINTER_COMMANDS_ARRAY_BASH_EXEC=(bash-exec '{}')
|
LINTER_COMMANDS_ARRAY_BASH_EXEC=(bash-exec '{}')
|
||||||
|
@ -44,6 +48,7 @@ LINTER_COMMANDS_ARRAY_EDITORCONFIG=(editorconfig-checker -config "${EDITORCONFIG
|
||||||
LINTER_COMMANDS_ARRAY_ENV=(dotenv-linter)
|
LINTER_COMMANDS_ARRAY_ENV=(dotenv-linter)
|
||||||
LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS=(actionlint -config-file "${GITHUB_ACTIONS_LINTER_RULES}")
|
LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS=(actionlint -config-file "${GITHUB_ACTIONS_LINTER_RULES}")
|
||||||
if [ "${GITHUB_ACTIONS_COMMAND_ARGS}" != "null" ] && [ -n "${GITHUB_ACTIONS_COMMAND_ARGS}" ]; then
|
if [ "${GITHUB_ACTIONS_COMMAND_ARGS}" != "null" ] && [ -n "${GITHUB_ACTIONS_COMMAND_ARGS}" ]; then
|
||||||
|
export GITHUB_ACTIONS_COMMAND_ARGS
|
||||||
LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS+=("${GITHUB_ACTIONS_COMMAND_ARGS}")
|
LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS+=("${GITHUB_ACTIONS_COMMAND_ARGS}")
|
||||||
fi
|
fi
|
||||||
LINTER_COMMANDS_ARRAY_GITLEAKS=(gitleaks detect --no-banner --no-git --redact --config "${GITLEAKS_LINTER_RULES}" --verbose --source)
|
LINTER_COMMANDS_ARRAY_GITLEAKS=(gitleaks detect --no-banner --no-git --redact --config "${GITLEAKS_LINTER_RULES}" --verbose --source)
|
||||||
|
@ -66,6 +71,7 @@ LINTER_COMMANDS_ARRAY_JSX=(eslint --no-eslintrc -c "${JSX_LINTER_RULES}")
|
||||||
LINTER_COMMANDS_ARRAY_KOTLIN=(ktlint "{/}")
|
LINTER_COMMANDS_ARRAY_KOTLIN=(ktlint "{/}")
|
||||||
LINTER_COMMANDS_ARRAY_KUBERNETES_KUBECONFORM=(kubeconform -strict)
|
LINTER_COMMANDS_ARRAY_KUBERNETES_KUBECONFORM=(kubeconform -strict)
|
||||||
if [ "${KUBERNETES_KUBECONFORM_OPTIONS}" != "null" ] && [ -n "${KUBERNETES_KUBECONFORM_OPTIONS}" ]; then
|
if [ "${KUBERNETES_KUBECONFORM_OPTIONS}" != "null" ] && [ -n "${KUBERNETES_KUBECONFORM_OPTIONS}" ]; then
|
||||||
|
export KUBERNETES_KUBECONFORM_OPTIONS
|
||||||
LINTER_COMMANDS_ARRAY_KUBERNETES_KUBECONFORM+=("${KUBERNETES_KUBECONFORM_OPTIONS}")
|
LINTER_COMMANDS_ARRAY_KUBERNETES_KUBECONFORM+=("${KUBERNETES_KUBECONFORM_OPTIONS}")
|
||||||
fi
|
fi
|
||||||
LINTER_COMMANDS_ARRAY_LATEX=(chktex -q -l "${LATEX_LINTER_RULES}")
|
LINTER_COMMANDS_ARRAY_LATEX=(chktex -q -l "${LATEX_LINTER_RULES}")
|
||||||
|
@ -85,6 +91,7 @@ LINTER_COMMANDS_ARRAY_NATURAL_LANGUAGE=(textlint -c "${NATURAL_LANGUAGE_LINTER_R
|
||||||
LINTER_COMMANDS_ARRAY_OPENAPI=(spectral lint -r "${OPENAPI_LINTER_RULES}" -D)
|
LINTER_COMMANDS_ARRAY_OPENAPI=(spectral lint -r "${OPENAPI_LINTER_RULES}" -D)
|
||||||
LINTER_COMMANDS_ARRAY_PERL=(perlcritic)
|
LINTER_COMMANDS_ARRAY_PERL=(perlcritic)
|
||||||
if [ "${PERL_PERLCRITIC_OPTIONS}" != "null" ] && [ -n "${PERL_PERLCRITIC_OPTIONS}" ]; then
|
if [ "${PERL_PERLCRITIC_OPTIONS}" != "null" ] && [ -n "${PERL_PERLCRITIC_OPTIONS}" ]; then
|
||||||
|
export PERL_PERLCRITIC_OPTIONS
|
||||||
LINTER_COMMANDS_ARRAY_PERL+=("${PERL_PERLCRITIC_OPTIONS}")
|
LINTER_COMMANDS_ARRAY_PERL+=("${PERL_PERLCRITIC_OPTIONS}")
|
||||||
fi
|
fi
|
||||||
LINTER_COMMANDS_ARRAY_PHP_BUILTIN=(php -l -c "${PHP_BUILTIN_LINTER_RULES}")
|
LINTER_COMMANDS_ARRAY_PHP_BUILTIN=(php -l -c "${PHP_BUILTIN_LINTER_RULES}")
|
||||||
|
|
|
@ -149,6 +149,7 @@ debug "TFLINT_LOG: ${TFLINT_LOG}"
|
||||||
ANSIBLE_FILE_NAME="${ANSIBLE_CONFIG_FILE:-.ansible-lint.yml}"
|
ANSIBLE_FILE_NAME="${ANSIBLE_CONFIG_FILE:-.ansible-lint.yml}"
|
||||||
# shellcheck disable=SC2034 # Variable is referenced indirectly
|
# shellcheck disable=SC2034 # Variable is referenced indirectly
|
||||||
ARM_FILE_NAME=".arm-ttk.psd1"
|
ARM_FILE_NAME=".arm-ttk.psd1"
|
||||||
|
BASH_FILE_NAME="${BASH_FILE_NAME:-".shellcheckrc"}"
|
||||||
BASH_SEVERITY="${BASH_SEVERITY:-""}"
|
BASH_SEVERITY="${BASH_SEVERITY:-""}"
|
||||||
CHECKOV_FILE_NAME="${CHECKOV_FILE_NAME:-".checkov.yaml"}"
|
CHECKOV_FILE_NAME="${CHECKOV_FILE_NAME:-".checkov.yaml"}"
|
||||||
# shellcheck disable=SC2034 # Variable is referenced indirectly
|
# shellcheck disable=SC2034 # Variable is referenced indirectly
|
||||||
|
|
|
@ -501,6 +501,7 @@ control "super-linter-validate-files" do
|
||||||
"/action/lib/.automation/.ruby-lint.yml",
|
"/action/lib/.automation/.ruby-lint.yml",
|
||||||
"/action/lib/.automation/.ruff.toml",
|
"/action/lib/.automation/.ruff.toml",
|
||||||
"/action/lib/.automation/.scalafmt.conf",
|
"/action/lib/.automation/.scalafmt.conf",
|
||||||
|
"/action/lib/.automation/.shellcheckrc",
|
||||||
"/action/lib/.automation/.snakefmt.toml",
|
"/action/lib/.automation/.snakefmt.toml",
|
||||||
"/action/lib/.automation/.sql-config.json",
|
"/action/lib/.automation/.sql-config.json",
|
||||||
"/action/lib/.automation/.sqlfluff",
|
"/action/lib/.automation/.sqlfluff",
|
||||||
|
|
Loading…
Reference in a new issue