Skip to content

Commit 1490b44

Browse files
author
Ataxexe
committed
Add support for convention over configuration
1 parent 8833075 commit 1490b44

2 files changed

Lines changed: 49 additions & 17 deletions

File tree

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,15 @@ Register the given parameter and returns indicating if the parameter was given.
222222
additional_parameters="$additional_parameters --extension=$BACKUP_EXTENSION"
223223
}
224224

225+
### convention (parameter_name, parameter_value, convention_value, description)
226+
227+
Same as `#parameter` but applies to values that have a convention and, so, will have always a value assigned (even
228+
if the user didn't specify one).
229+
230+
convention "output-format" "pdf" "Sets the output format"
231+
232+
echo "$OUTPUT_FORMAT" # will print 'pdf' if user didn't use the `--output-format` parameter.
233+
225234
### exists ([type] path)
226235

227236
Checks if the file $SODA_USER_HOME/$type/$NAMESPACE/$path exists using the namespace of the invoked task or imported namespace. The file path will be stored in the $FILE variable. If the *type* is not passed then **resources** will be used.

scripts/core.sh

Lines changed: 40 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
2323
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2424

25-
SODA_VERSION="1.4.1"
25+
SODA_VERSION="1.5.0"
2626

2727
# Stores the usage for exposed commands
2828
TASKS_USAGE=" TASKS:"
@@ -84,16 +84,50 @@ task() {
8484
# parameter name, [parameter value, [default value]], description
8585
#
8686
parameter() {
87-
local parameter_name="$(lowercase ${1//_/-})"
88-
local parameter_value=""
89-
local default=""
87+
extract_parameter "$@"
88+
if [[ $parameter_value ]]; then
89+
if [[ "$parameter_value" == true ]]; then
90+
if [[ -n "$default_value" ]]; then
91+
log_debug "Setting default value for $parameter_name: $default_value"
92+
set_var "$parameter_name" "$default_value"
93+
fi
94+
fi
95+
return 0
96+
else
97+
return 1
98+
fi
99+
}
100+
101+
#
102+
# Exposes the given parameter in the program usage as a convention. If it's not
103+
# given through the command line, the default value will be assumed
104+
#
105+
# Arguments:
106+
#
107+
# parameter name, parameter value, default value, description
108+
#
109+
convention() {
110+
extract_parameter "$@"
111+
if [[ $parameter_value ]]; then
112+
return 0
113+
else
114+
log_debug "Setting default value for $parameter_name: $default_value"
115+
set_var "$parameter_name" "$default_value"
116+
return 1
117+
fi
118+
}
119+
120+
extract_parameter() {
121+
parameter_name="$(lowercase ${1//_/-})"
122+
parameter_value=""
123+
default_value=""
90124
local description=""
91125
if [[ $# == 3 ]]; then
92126
parameter_value="$2"
93127
description="$3"
94128
elif [[ $# == 4 ]]; then
95129
parameter_value="$2"
96-
default="$3"
130+
default_value="$3"
97131
description="$4 (defaults to '$3')"
98132
else
99133
description="$2"
@@ -115,18 +149,7 @@ parameter() {
115149
fi
116150
fi
117151
parameter_name="$(uppercase ${parameter_name//-/_})"
118-
local value="$(get_var "$parameter_name")"
119-
if [[ $value ]]; then
120-
if [[ "$value" == true ]]; then
121-
if [[ -n "$default" ]]; then
122-
log_debug "Setting default value for $parameter_name: $default"
123-
set_var "$parameter_name" "$default"
124-
fi
125-
fi
126-
return 0
127-
else
128-
return 1
129-
fi
152+
parameter_value="$(get_var "$parameter_name")"
130153
}
131154

132155
SODA_IMPORTS=""

0 commit comments

Comments
 (0)