Skip to content

Commit 1b406e1

Browse files
committed
- Make generated scripts compatible with bash strict mode
1 parent aecc68e commit 1b406e1

File tree

14 files changed

+25
-17
lines changed

14 files changed

+25
-17
lines changed

examples/config-ini/src/lib/config.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ config_init() {
2222
config_get() {
2323
key=$1
2424
regex="^$key\s*=\s*(.+)$"
25+
value=''
2526

2627
config_init
2728

@@ -122,5 +123,5 @@ config_keys() {
122123
# fi
123124
#
124125
config_has_key() {
125-
[[ $(config_get "$1") ]]
126+
[[ $(config_get "${1:-}") ]]
126127
}

examples/environment-variables/src/verify_command.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ echo "# you can edit it freely and regenerate (it will not be overwritten)"
44
inspect_args
55

66
echo "environment:"
7-
echo "- API_KEY=$API_KEY"
8-
echo "- ENVIRONMENT=$ENVIRONMENT"
9-
echo "- MY_SECRET=$MY_SECRET"
7+
echo "- API_KEY=${API_KEY:-}"
8+
echo "- ENVIRONMENT=${ENVIRONMENT:-}"
9+
echo "- MY_SECRET=${MY_SECRET:-}"

examples/yaml/src/root_command.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
filename=${args[filename]}
2-
variable=${args[variable]}
3-
prefix=${args[--prefix]}
1+
filename=${args[filename]:-}
2+
variable=${args[variable]:-}
3+
prefix=${args[--prefix]:-}
44

55
if [[ $variable ]]; then
66
eval "$(yaml_load "$filename" "$prefix")"

lib/bashly/commands/generate.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class Generate < Base
1313

1414
environment "BASHLY_SOURCE_DIR", "The path containing the bashly configuration and source files [default: src]"
1515
environment "BASHLY_TARGET_DIR", "The path to use for creating the bash script [default: .]"
16+
environment "BASHLY_STRICT", "When not empty, enable bash strict mode (set -euo pipefail)"
1617

1718
example "bashly generate --force"
1819
example "bashly generate --wrap my_function"

lib/bashly/views/command/catch_all_filter.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# :command.catch_all_filter
22
% if catch_all_required?
3-
if [[ ${#other_args[@]} -eq 0 ]]; then
3+
if [[ ! -v other_args[@] ]]; then
44
printf "<%= strings[:missing_required_argument] % { arg: catch_all_label, usage: usage_string } %>\n"
55
exit 1
66
fi

lib/bashly/views/command/command_filter.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# :command.command_filter
22
% if commands.any?
3-
action=$1
3+
action=${1:-}
44

55
case $action in
66
-* )
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# :command.default_assignments
22
% default_args.each do |arg|
3-
[[ -n ${args[<%= arg.name %>]} ]] || args[<%= arg.name %>]="<%= arg.default %>"
3+
[[ -n ${args[<%= arg.name %>]:-} ]] || args[<%= arg.name %>]="<%= arg.default %>"
44
% end
55
% default_flags.each do |flag|
6-
[[ -n ${args[<%= flag.long %>]} ]] || args[<%= flag.long %>]="<%= flag.default %>"
6+
[[ -n ${args[<%= flag.long %>]:-} ]] || args[<%= flag.long %>]="<%= flag.default %>"
77
% end

lib/bashly/views/command/environment_variables_filter.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export <%= env_var.name.upcase %>="${<%= env_var.name.upcase %>:-<%= env_var.def
66
% end
77
% if required_environment_variables.any?
88
% required_environment_variables.each do |env_var|
9-
if [[ -z "$<%= env_var.name.upcase %>" ]]; then
9+
if [[ -z "${<%= env_var.name.upcase %>:-}" ]]; then
1010
printf "<%= strings[:missing_required_environment_variable] % { var: env_var.name.upcase } %>\n"
1111
exit 1
1212
fi

lib/bashly/views/command/fixed_flags_filter.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# :command.fixed_flag_filter
2-
case "$1" in
2+
case "${1:-}" in
33
% if short_flag_exist? "-v"
44
--version )
55
% else

lib/bashly/views/command/initialize.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
initialize() {
33
version="<%= version %>"
44
long_usage=''
5-
set -e
5+
<%= ENV['BASHLY_STRICT'] ? "set -euo pipefail" : "set -e" %>
66

77
<%= load_user_file("initialize.sh", placeholder: false).indent 2 %>
88
}

0 commit comments

Comments
 (0)