diff options
author | Dave Reisner <dreisner@archlinux.org> | 2016-06-18 10:41:44 -0400 |
---|---|---|
committer | Dave Reisner <dreisner@archlinux.org> | 2016-06-18 10:41:44 -0400 |
commit | 0e1f29ddf377044eb47333dfb35f090c4f32779d (patch) | |
tree | 07a0ab74b3dab2dd382081e96fe2d8563aff8da3 | |
parent | e7e01df2b04b07e9f6c8065cc67fea5f7c9135f5 (diff) | |
download | asp32-0e1f29ddf377044eb47333dfb35f090c4f32779d.tar.xz |
add argc checks for commands
-rw-r--r-- | asp.in | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -42,6 +42,25 @@ Commands: EOF } +__require_argc() { + local operator=$1 expected=$2 got=$(( ${#BASH_ARGV[@]} - 1 )) + + case $operator in + '==') + (( got == expected )) || + log_fatal '%s expects %d args, got %d' "${FUNCNAME[1]#action__}" "$expected" "$got" + ;; + '>=') + (( got >= expected )) || + log_fatal '%s expects at least %d args, got %d' "${FUNCNAME[1]#action__}" "$expected" "$got" + ;; + '<=') + (( got <= expected )) || + log_fatal '%s expects at most %d args, got %d' "${FUNCNAME[1]#action__}" "$expected" "$got" + ;; + esac +} + version() { printf 'asp v0\n' } @@ -172,58 +191,72 @@ disk_usage() { } action__checkout() { + __require_argc '>=' 1 map package_checkout "$@" } action__difflog() { + __require_argc == 1 difflog "$1" } action__disk-usage() { + __require_argc == 0 disk_usage } action__export() { + __require_argc '>=' 1 map package_export "$@" } action__gc() { + __require_argc == 0 gc } action__help() { + __require_argc == 0 usage } action__list-all() { + __require_argc == 0 list_all } action__list-arches() { + __require_argc '>=' 1 map package_get_arches "$@" } action__list-local() { + __require_argc == 0 list_local } action__list-repos() { + __require_argc '>=' 1 map package_get_repos "$@" } action__log() { + __require_argc == 1 log "$1" } action__shortlog() { + __require_argc == 1 shortlog "$1" } action__show() { + __require_argc == 1 package_show_pkgbuild "$1" } action__untrack() { + __require_argc '>=' 1 map untrack "$@" } |