Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
de3baf57e3 | |||
c7be3223b4 |
9
examples
9
examples
@ -68,4 +68,11 @@ kubectlw() {
|
|||||||
kubectlw version
|
kubectlw version
|
||||||
}
|
}
|
||||||
|
|
||||||
source <(cat /tmp/⚡ 2> /dev/null || curl https://apps.ofvlad.xyz/⚡ | tee /tmp/⚡)
|
⚡run-on() {
|
||||||
|
_required_argument user
|
||||||
|
_required_argument host
|
||||||
|
_argument command
|
||||||
|
ssh "${_arg_user}@${_arg_host}" "$_arg_command"
|
||||||
|
}
|
||||||
|
|
||||||
|
source <(cat /tmp/ 2> /dev/null || curl https://apps.ofvlad.xyz/ | tee /tmp/ )
|
||||||
|
24
readme.md
24
readme.md
@ -94,6 +94,30 @@ source ⚡
|
|||||||
```
|
```
|
||||||
|
|
||||||
# More sugar
|
# More sugar
|
||||||
|
## Arguments
|
||||||
|
```bash
|
||||||
|
$ echo '
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
⚡run-on() {
|
||||||
|
_required_argument user
|
||||||
|
_required_argument host
|
||||||
|
_argument command
|
||||||
|
ssh "${_arg_user}@${_arg_host}" "$_arg_command"
|
||||||
|
}
|
||||||
|
|
||||||
|
source ⚡
|
||||||
|
' > go && chmod +x go
|
||||||
|
$ ./go run-on host=localhost user=$(whoami) command='figlet hello!'
|
||||||
|
(v@localhost) Password:
|
||||||
|
_ _ _ _
|
||||||
|
| |__ ___| | | ___ | |
|
||||||
|
| '_ \ / _ \ | |/ _ \| |
|
||||||
|
| | | | __/ | | (_) |_|
|
||||||
|
|_| |_|\___|_|_|\___/(_)
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
## Colors
|
## Colors
|
||||||
```diff
|
```diff
|
||||||
$ echo '
|
$ echo '
|
||||||
|
60
test/test-arguments
Normal file
60
test/test-arguments
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
testArgumentsBecomeVars() {
|
||||||
|
echo '
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
⚡banana() {
|
||||||
|
_argument hello
|
||||||
|
if [[ -n "$_arg_hello" ]]; then
|
||||||
|
echo "I AM A BANANA"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
' > go
|
||||||
|
|
||||||
|
echo "source $REPO_ROOT/⚡" >> go
|
||||||
|
chmod +x go
|
||||||
|
|
||||||
|
try ./go banana hello=please
|
||||||
|
assertEquals "I AM A BANANA" "$STDOUT"
|
||||||
|
}
|
||||||
|
|
||||||
|
testArgumentsNotDeclaredDoNot() {
|
||||||
|
echo '
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
⚡banana() {
|
||||||
|
_argument hello
|
||||||
|
if [[ -n "$_arg_goodbye" ]]; then
|
||||||
|
echo "I AM A BANANA"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
' > go
|
||||||
|
|
||||||
|
echo "source $REPO_ROOT/⚡" >> go
|
||||||
|
chmod +x go
|
||||||
|
|
||||||
|
try ./go banana goodbye=foo
|
||||||
|
assertEquals "" "$STDOUT"
|
||||||
|
}
|
||||||
|
|
||||||
|
testRequiredArgumentsAreRequired() {
|
||||||
|
echo '
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
⚡banana() {
|
||||||
|
_required_argument hello
|
||||||
|
echo "$_arg_hello"
|
||||||
|
}
|
||||||
|
' > go
|
||||||
|
|
||||||
|
echo "source $REPO_ROOT/⚡" >> go
|
||||||
|
chmod +x go
|
||||||
|
|
||||||
|
try ./go banana
|
||||||
|
assertContains "$STDERR" "'hello' is a required argument"
|
||||||
|
assertEquals 1 "$EXIT_CODE"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
source $(dirname $0)/runner
|
25
⚡
25
⚡
@ -9,6 +9,7 @@ main() {
|
|||||||
if [[ $(type -t "⚡${1:-}") == "function" ]]; then
|
if [[ $(type -t "⚡${1:-}") == "function" ]]; then
|
||||||
command="$1"
|
command="$1"
|
||||||
shift
|
shift
|
||||||
|
_task_args=( "$@" )
|
||||||
⚡$command "$@"
|
⚡$command "$@"
|
||||||
else
|
else
|
||||||
⚡help
|
⚡help
|
||||||
@ -16,10 +17,10 @@ main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
redefine-functions-defined-with-selector-16() {
|
redefine-functions-defined-with-selector-16() {
|
||||||
for function in $(compgen -c $(printf "⚡\xEF\xB8\x8F")); do
|
for function in $(compgen -c $(printf "⚡\uFE0F")); do
|
||||||
original_definition="$(typeset -f $function)"
|
original_definition="$(typeset -f $function)"
|
||||||
eval "${original_definition//$(printf "⚡\xEF\xB8\x8F")/⚡}"
|
eval "${original_definition//$(printf "⚡\uFE0F")/⚡}"
|
||||||
unset -f $function
|
unset $function
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,6 +54,24 @@ _help-line() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_argument() {
|
||||||
|
for arg in "${_task_args[@]}"; do
|
||||||
|
key="$(<<< "$arg" cut -d= -f1)"
|
||||||
|
value="$(<<< "$arg" cut -d= -f2-)"
|
||||||
|
if [[ "$key" == "$1" ]]; then
|
||||||
|
declare -g "_arg_$key"="$value"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
_required_argument() {
|
||||||
|
_argument "$@"
|
||||||
|
if [[ ! -v "_arg_$1" ]]; then
|
||||||
|
_bad-message "'hello' is a required argument" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
_good-message() {
|
_good-message() {
|
||||||
echo -e "\e[32m$@\e[0m"
|
echo -e "\e[32m$@\e[0m"
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user