mirror of
https://github.com/tests-always-included/mo.git
synced 2024-12-18 16:27:52 +00:00
Add test for --source flag and pull request suggestions
Add a demo/sourcing.vars file to be used by the associated demo script. Modified mo argument parsing so that --help and --source=file do not need to be the first arguments for mo. And can in fact appear after or in the middle of filenames.
This commit is contained in:
parent
4f7fd392b0
commit
45475ec77e
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,4 +4,3 @@ diagnostic.test
|
||||
tests/*.diff
|
||||
spec/
|
||||
spec-runner/
|
||||
demo/sourcing.vars
|
||||
|
@ -4,11 +4,6 @@
|
||||
|
||||
cd "$(dirname "$0")" # Go to the script's directory
|
||||
|
||||
cat <<EOF >sourcing.vars
|
||||
export NAME="Alex"
|
||||
export ARRAY=( AAA BBB CCC )
|
||||
EOF
|
||||
|
||||
cat <<EOF | ../mo --source=sourcing.vars
|
||||
Hello, my name is {{NAME}}.
|
||||
And this is ARRAY's conntents:
|
||||
|
2
demo/sourcing.vars
Normal file
2
demo/sourcing.vars
Normal file
@ -0,0 +1,2 @@
|
||||
export NAME="Alex"
|
||||
export ARRAY=( AAA BBB CCC )
|
23
mo
23
mo
@ -29,25 +29,38 @@
|
||||
mo() (
|
||||
# This function executes in a subshell so IFS is reset.
|
||||
# Namespace this variable so we don't conflict with desired values.
|
||||
local moContent
|
||||
local moContent files=()
|
||||
|
||||
IFS=$' \n\t'
|
||||
|
||||
if [[ $# -gt 0 ]]; then
|
||||
case "$1" in
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
-h|--h|--he|--hel|--help)
|
||||
moUsage "$0"
|
||||
exit 0
|
||||
;;
|
||||
|
||||
--source=*)
|
||||
. "${1#--source=}"
|
||||
shift 1
|
||||
local f2source="${1#--source=}"
|
||||
if [[ -f "$f2source" ]]; then
|
||||
. "$f2source"
|
||||
continue
|
||||
else
|
||||
printf "%s: %s: %s\n"\
|
||||
"$0" "$f2source" "No such file" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
*) # Every arg that is not a flag or a option should be a file
|
||||
files+=("$arg")
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
moGetContent moContent "$@"
|
||||
moGetContent moContent "${files[@]}"
|
||||
moParse "$moContent" "" true
|
||||
)
|
||||
|
||||
|
5
tests/source.expected
Normal file
5
tests/source.expected
Normal file
@ -0,0 +1,5 @@
|
||||
value
|
||||
* 1
|
||||
* 2
|
||||
* 3
|
||||
AAA BBB
|
17
tests/source.sh
Executable file
17
tests/source.sh
Executable file
@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
cd "${0%/*}"
|
||||
cat <<EOF | ../mo --source=source.vars
|
||||
{{VAR}}
|
||||
{{#ARR}}
|
||||
* {{.}}
|
||||
{{/ARR}}
|
||||
{{ASSOC_ARR.a}} {{ASSOC_ARR.b}}
|
||||
EOF
|
||||
|
||||
|
||||
# Prints the string should mo NOT fail. Meaning that the output will not match
|
||||
# tests/source.expected and therefore the test will fail.
|
||||
|
||||
../mo --source=a/non/existent/file files >/dev/null 2>&1
|
||||
[[ "$?" -ne 1 ]] && echo "mo accepted a non existent file"
|
4
tests/source.vars
Normal file
4
tests/source.vars
Normal file
@ -0,0 +1,4 @@
|
||||
export VAR=value
|
||||
export ARR=(1 2 3)
|
||||
declare -A ASSOC_ARR
|
||||
export ASSOC_ARR=([a]=AAA [b]=BBB)
|
Loading…
Reference in New Issue
Block a user