Skip to content

Commit 8fdfb5b

Browse files
committed
fix(terraform_docs): apply some of yermulnik suggestions
1 parent a6bf17a commit 8fdfb5b

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

hooks/terraform_docs.sh

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/usr/bin/env bash
22
set -eo pipefail
3+
34
# globals variables
45
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
56
readonly SCRIPT_DIR
@@ -143,15 +144,17 @@ function terraform_docs {
143144

144145
else
145146
have_config_flag=true
146-
local config_file=${args#*--config}
147-
config_file=${config_file#*=}
148-
# If there are more parameters after config path, trim until --
149-
if [[ $config_file == *" --"* ]]; then
150-
config_file=${config_file%% --*}
151-
fi
152-
# Trim trailing whitespace but preserve internal spaces
153-
154-
config_file="${config_file%"${config_file##*[![:space:]]}"}" args=${args/--config=$config_file/}
147+
# Enable extended pattern matching operators
148+
shopt -qp extglob || EXTGLOB_IS_NOT_SET=true && shopt -s extglob
149+
# Trim any args before the `--config` arg value
150+
local config_file=${args##*--config@(+([[:space:]])|=)}
151+
# Trim any trailing spaces and args (if any)
152+
config_file="${config_file%%+([[:space:]])?(--*)}"
153+
# Trim `--config` arg and its value from original args as we will
154+
# pass `--config` separately to allow whitespaces in its value
155+
args=${args/--config@(+([[:space:]])|=)$config_file*([[:space:]])/}
156+
# Restore state of `extglob` if we changed it
157+
[[ $EXTGLOB_IS_NOT_SET ]] && shopt -u extglob
155158

156159
# Prioritize `.terraform-docs.yml` `output.file` over
157160
# `--hook-config=--path-to-file=` if it set
@@ -237,10 +240,8 @@ function terraform_docs {
237240
have_marker=$(grep -o "$insertion_marker_begin" "$output_file") || unset have_marker
238241
[[ ! $have_marker ]] && popd > /dev/null && continue
239242
fi
240-
local config_options=""
241-
if [[ $have_config_flag == true ]]; then
242-
config_options="--config=$config_file"
243-
fi
243+
local config_options
244+
[[ $have_config_flag == true ]] && config_options="--config=$config_file"
244245
# shellcheck disable=SC2086
245246
terraform-docs --output-mode="$output_mode" --output-file="$output_file" $tf_docs_formatter "$config_options" $args ./ > /dev/null
246247

0 commit comments

Comments
 (0)