@@ -88,6 +88,7 @@ function terraform_docs {
88
88
local add_to_existing=false
89
89
local create_if_not_exist=false
90
90
local use_standard_markers=true
91
+ local have_config_flag=false
91
92
92
93
IFS=" ;" read -r -a configs <<< " $hook_config"
93
94
@@ -142,10 +143,18 @@ function terraform_docs {
142
143
local tf_docs_formatter=" md"
143
144
144
145
else
145
-
146
- local config_file=${args#* --config}
147
- config_file=${config_file#* =}
148
- config_file=${config_file% * }
146
+ have_config_flag=true
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
149
158
150
159
# Prioritize `.terraform-docs.yml` `output.file` over
151
160
# `--hook-config=--path-to-file=` if it set
@@ -231,8 +240,10 @@ function terraform_docs {
231
240
have_marker=$( grep -o " $insertion_marker_begin " " $output_file " ) || unset have_marker
232
241
[[ ! $have_marker ]] && popd > /dev/null && continue
233
242
fi
243
+ local config_options
244
+ [[ $have_config_flag == true ]] && config_options=" --config=$config_file "
234
245
# shellcheck disable=SC2086
235
- terraform-docs --output-mode=" $output_mode " --output-file=" $output_file " $tf_docs_formatter $args ./ > /dev/null
246
+ terraform-docs --output-mode=" $output_mode " --output-file=" $output_file " $tf_docs_formatter " $config_options " $args ./ > /dev/null
236
247
237
248
popd > /dev/null
238
249
done
0 commit comments