Skip to content

Commit 109384b

Browse files
authored
feat: pass optional arguments to gitleaks (#6756)
Support passing optional arguments when running gitleaks Close #6601
1 parent b4aaae9 commit 109384b

File tree

3 files changed

+58
-29
lines changed

3 files changed

+58
-29
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,7 @@ You can configure Super-linter using the following environment variables:
285285
| **GITHUB_CUSTOM_API_URL** | `https://api.${GITHUB_DOMAIN}` | Specify a custom GitHub API URL in case GitHub Enterprise is used: e.g. `https://github.myenterprise.com/api/v3` |
286286
| **GITHUB_CUSTOM_SERVER_URL** | `https://${GITHUB_DOMAIN}"` | Specify a custom GitHub server URL. Useful for GitHub Enterprise instances. |
287287
| **GITHUB_DOMAIN** | `github.com` | Specify a custom GitHub domain in case GitHub Enterprise is used: e.g. `github.myenterprise.com`. `GITHUB_DOMAIN` is a convenience configuration variable to automatically build `GITHUB_CUSTOM_API_URL` and `GITHUB_CUSTOM_SERVER_URL`. |
288+
| **GITLEAKS_COMMAND_OPTIONS** | not set | Additional options and arguments to pass to the command when running Gitleaks |
288289
| **GITLEAKS_CONFIG_FILE** | `.gitleaks.toml` | Filename for [GitLeaks configuration](https://github.com/zricethezav/gitleaks#configuration) (ex: `.gitleaks.toml`) |
289290
| **GITLEAKS_LOG_LEVEL** | Gitleaks default log level | Gitleaks log level. Defaults to the Gitleaks default log level. |
290291
| **GO_CONFIG_FILE** | `.golangci.yml` | Filename for [golangci-lint configuration](https://golangci-lint.run/usage/configuration/) (ex: `.golangci.toml`) |

lib/functions/linterCommands.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,10 @@ if [ -n "${GITLEAKS_LOG_LEVEL:-}" ]; then
149149
LINTER_COMMANDS_ARRAY_GITLEAKS+=("${GITLEAKS_LOG_LEVEL_OPTIONS[@]}" "${GITLEAKS_LOG_LEVEL}")
150150
debug "Add log options to the Gitleaks command: ${LINTER_COMMANDS_ARRAY_GITLEAKS[*]}"
151151
fi
152+
if [ -n "${GITLEAKS_COMMAND_OPTIONS:-}" ]; then
153+
export GITLEAKS_COMMAND_OPTIONS
154+
AddOptionsToCommand "LINTER_COMMANDS_ARRAY_GITLEAKS" "${GITLEAKS_COMMAND_OPTIONS}"
155+
fi
152156
LINTER_COMMANDS_ARRAY_GITLEAKS+=(--source)
153157
LINTER_COMMANDS_ARRAY_GHERKIN=(gherkin-lint -c "${GHERKIN_LINTER_RULES}")
154158
LINTER_COMMANDS_ARRAY_GIT_COMMITLINT=(commitlint --verbose --cwd "{}")

test/lib/linterCommandsTest.sh

Lines changed: 53 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -396,36 +396,67 @@ function InitPowerShellCommandTest() {
396396
notice "${FUNCTION_NAME} PASS"
397397
}
398398

399+
# Test environment variables to set command options
399400
CommandOptionsTest() {
400401
local FUNCTION_NAME
401402
FUNCTION_NAME="${FUNCNAME[0]}"
402403
info "${FUNCTION_NAME} start"
403404

404405
# Add custom arguments to linter commands that support them.
405-
# If possible, use command option that can run without modifying the filesystem,
406-
# and that don't need any input.
407406

407+
ARGS_TO_ADD="--arg1 --arg2"
408+
409+
# shellcheck disable=SC2034
410+
local GITHUB_ACTIONS_COMMAND_ARGS="${ARGS_TO_ADD}"
408411
# shellcheck disable=SC2034
409-
local GITHUB_ACTIONS_COMMAND_ARGS="-color -debug -verbose -version"
412+
local GITLEAKS_COMMAND_OPTIONS="${ARGS_TO_ADD}"
410413
# shellcheck disable=SC2034
411-
local KUBERNETES_KUBECONFORM_OPTIONS="-debug -verbose -v"
414+
local KUBERNETES_KUBECONFORM_OPTIONS="${ARGS_TO_ADD}"
412415
# shellcheck disable=SC2034
413-
local PERL_PERLCRITIC_OPTIONS="--gentle --count test/linters/perl/perl_good_1.pl"
416+
local PERL_PERLCRITIC_OPTIONS="${ARGS_TO_ADD}"
414417
# shellcheck disable=SC2034
415-
local RUST_CLIPPY_COMMAND_OPTIONS="--verbose --help"
418+
local RUST_CLIPPY_COMMAND_OPTIONS="${ARGS_TO_ADD}"
416419

417420
# Source the file again so it accounts for modifications
418421
# shellcheck source=/dev/null
419422
source "lib/functions/linterCommands.sh"
420423

421-
# Try running the commands
422-
"${LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS[@]}"
423-
"${LINTER_COMMANDS_ARRAY_KUBERNETES_KUBECONFORM[@]}"
424-
"${LINTER_COMMANDS_ARRAY_PERL[@]}"
425-
# Rust Clippy is only available in the standard image, so we can't run it when
426-
# testing the slim image
427-
if IsStandardImage; then
428-
"${LINTER_COMMANDS_ARRAY_RUST_CLIPPY[@]}"
424+
# shellcheck disable=SC2034
425+
local EXPECTED_LINTER_COMMANDS_ARRAY_GITLEAKS=("${BASE_LINTER_COMMANDS_ARRAY_GITLEAKS[@]}")
426+
# remove the last argument (--source) because we add command arguments before --source
427+
unset "EXPECTED_LINTER_COMMANDS_ARRAY_GITLEAKS[-1]"
428+
# also add the --source argument that we removed before
429+
AddOptionsToCommand "EXPECTED_LINTER_COMMANDS_ARRAY_GITLEAKS" "${GITLEAKS_COMMAND_OPTIONS} --source"
430+
if ! AssertArraysElementsContentMatch "LINTER_COMMANDS_ARRAY_GITLEAKS" "EXPECTED_LINTER_COMMANDS_ARRAY_GITLEAKS"; then
431+
fatal "${FUNCTION_NAME} test failed"
432+
fi
433+
434+
# shellcheck disable=SC2034
435+
local EXPECTED_LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS=("${BASE_LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS[@]}")
436+
AddOptionsToCommand "EXPECTED_LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS" "${GITHUB_ACTIONS_COMMAND_ARGS}"
437+
if ! AssertArraysElementsContentMatch "LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS" "EXPECTED_LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS"; then
438+
fatal "${FUNCTION_NAME} test failed"
439+
fi
440+
441+
# shellcheck disable=SC2034
442+
local EXPECTED_LINTER_COMMANDS_ARRAY_KUBERNETES_KUBECONFORM=("${BASE_LINTER_COMMANDS_ARRAY_KUBERNETES_KUBECONFORM[@]}")
443+
AddOptionsToCommand "EXPECTED_LINTER_COMMANDS_ARRAY_KUBERNETES_KUBECONFORM" "${KUBERNETES_KUBECONFORM_OPTIONS}"
444+
if ! AssertArraysElementsContentMatch "LINTER_COMMANDS_ARRAY_KUBERNETES_KUBECONFORM" "EXPECTED_LINTER_COMMANDS_ARRAY_KUBERNETES_KUBECONFORM"; then
445+
fatal "${FUNCTION_NAME} test failed"
446+
fi
447+
448+
# shellcheck disable=SC2034
449+
local EXPECTED_LINTER_COMMANDS_ARRAY_PERL=("${BASE_LINTER_COMMANDS_ARRAY_PERL[@]}")
450+
AddOptionsToCommand "EXPECTED_LINTER_COMMANDS_ARRAY_PERL" "${PERL_PERLCRITIC_OPTIONS}"
451+
if ! AssertArraysElementsContentMatch "LINTER_COMMANDS_ARRAY_PERL" "EXPECTED_LINTER_COMMANDS_ARRAY_PERL"; then
452+
fatal "${FUNCTION_NAME} test failed"
453+
fi
454+
455+
# shellcheck disable=SC2034
456+
local EXPECTED_LINTER_COMMANDS_ARRAY_RUST_CLIPPY=("${BASE_LINTER_COMMANDS_ARRAY_RUST_CLIPPY[@]}")
457+
AddOptionsToCommand "EXPECTED_LINTER_COMMANDS_ARRAY_RUST_CLIPPY" "${RUST_CLIPPY_COMMAND_OPTIONS}"
458+
if ! AssertArraysElementsContentMatch "LINTER_COMMANDS_ARRAY_RUST_CLIPPY" "EXPECTED_LINTER_COMMANDS_ARRAY_RUST_CLIPPY"; then
459+
fatal "${FUNCTION_NAME} test failed"
429460
fi
430461

431462
notice "${FUNCTION_NAME} PASS"
@@ -436,24 +467,17 @@ AddOptionsToCommandTest() {
436467
FUNCTION_NAME="${FUNCNAME[0]}"
437468
info "${FUNCTION_NAME} start"
438469

439-
local TEST_LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS=("${BASE_LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS[@]}")
440-
AddOptionsToCommand "TEST_LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS" "-color -debug -verbose -version"
441-
"${TEST_LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS[@]}"
470+
local TEST_LINTER_COMMANDS_ARRAY=("command1")
442471

443-
local TEST_LINTER_COMMANDS_ARRAY_KUBERNETES_KUBECONFORM=("${BASE_LINTER_COMMANDS_ARRAY_KUBERNETES_KUBECONFORM[@]}")
444-
AddOptionsToCommand "TEST_LINTER_COMMANDS_ARRAY_KUBERNETES_KUBECONFORM" "-debug -verbose -v"
445-
"${TEST_LINTER_COMMANDS_ARRAY_KUBERNETES_KUBECONFORM[@]}"
472+
ARG_TO_ADD_1="--arg1"
473+
ARG_TO_ADD_2="--arg2"
446474

447-
local TEST_LINTER_COMMANDS_ARRAY_PERL=("${BASE_LINTER_COMMANDS_ARRAY_PERL[@]}")
448-
AddOptionsToCommand "TEST_LINTER_COMMANDS_ARRAY_PERL" "--gentle --count test/linters/perl/perl_good_1.pl"
449-
"${TEST_LINTER_COMMANDS_ARRAY_PERL[@]}"
475+
# shellcheck disable=SC2034
476+
local EXPECTED_COMMAND_ARRAY=("${TEST_LINTER_COMMANDS_ARRAY[@]}" "${ARG_TO_ADD_1}" "${ARG_TO_ADD_2}")
450477

451-
# Rust Clippy is only available in the standard image, so we can't run it when
452-
# testing the slim image
453-
if IsStandardImage; then
454-
local TEST_LINTER_COMMANDS_ARRAY_RUST_CLIPPY=("${BASE_LINTER_COMMANDS_ARRAY_RUST_CLIPPY[@]}")
455-
AddOptionsToCommand "TEST_LINTER_COMMANDS_ARRAY_RUST_CLIPPY" "--verbose --help"
456-
"${TEST_LINTER_COMMANDS_ARRAY_RUST_CLIPPY[@]}"
478+
AddOptionsToCommand "TEST_LINTER_COMMANDS_ARRAY" "${ARG_TO_ADD_1} ${ARG_TO_ADD_2}"
479+
if ! AssertArraysElementsContentMatch "TEST_LINTER_COMMANDS_ARRAY" "EXPECTED_COMMAND_ARRAY"; then
480+
fatal "${FUNCTION_NAME} test failed"
457481
fi
458482

459483
notice "${FUNCTION_NAME} PASS"

0 commit comments

Comments
 (0)