Skip to content

Commit 4034968

Browse files
authored
Port functions from terraform-aws-zookeeper (#37)
* Define string_substr function * Add function that asserts whether the user has permissions to run sudo * Add " for consistency
1 parent ddd22a6 commit 4034968

File tree

3 files changed

+48
-2
lines changed

3 files changed

+48
-2
lines changed

modules/bash-commons/src/assert.sh

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ function assert_exactly_one_of {
9191
# Determine how many arg_vals are non-empty
9292
for (( i=0; i<$((num_args)); i+=2 )); do
9393
arg_names+=("${args[i]}")
94-
if [[ ! -z "${args[i+1]}" ]]; then
94+
if [[ -n "${args[i+1]}" ]]; then
9595
num_non_empty=$((num_non_empty+1))
9696
fi
9797
done
@@ -108,4 +108,12 @@ function assert_uid_is_root_or_sudo {
108108
log_error "This script should be run using sudo or as the root user"
109109
exit 1
110110
fi
111-
}
111+
}
112+
113+
# Assert that the user running this script has permissions to run sudo.
114+
function assert_user_has_sudo_perms {
115+
if ! sudo -n true >/dev/null 2>&1; then
116+
log_error "This script should be run using sudo, as the root user, or as a user with sudo permissions."
117+
exit 1
118+
fi
119+
}

modules/bash-commons/src/string.sh

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,32 @@ function string_is_empty_or_null {
5656
local -r response="$1"
5757
[[ -z "$response" || "$response" == "null" ]]
5858
}
59+
60+
61+
# Given a string $str, return the substring beginning at index $start and ending at index $end.
62+
#
63+
# Example:
64+
#
65+
# string_substr "hello world" 0 5
66+
# Returns "hello"
67+
function string_substr {
68+
local -r str="$1"
69+
local -r start="$2"
70+
local end="$3"
71+
72+
if [[ "$start" -lt 0 || "$end" -lt 0 ]]; then
73+
log_error "In the string_substr bash function, each of \$start and \$end must be >= 0."
74+
exit 1
75+
fi
76+
77+
if [[ "$start" -gt "$end" ]]; then
78+
log_error "In the string_substr bash function, \$start must be < \$end."
79+
exit 1
80+
fi
81+
82+
if [[ -z "$end" ]]; then
83+
end="${#str}"
84+
fi
85+
86+
echo "${str:$start:$end}"
87+
}

test/string.bats

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,4 +186,13 @@ load "test-helper"
186186
assert_failure
187187
}
188188

189+
@test "string_substr empty string" {
190+
run string_substr "" 0 0
191+
assert_success
192+
}
189193

194+
@test "string_substr non empty string" {
195+
run string_substr "hello world" 0 5
196+
assert_success
197+
assert_output "hello"
198+
}

0 commit comments

Comments
 (0)