summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBo Ørsted Andresen <bo.andresen@zlin.dk>2007-03-09 10:03:59 +0000
committerBo Ørsted Andresen <bo.andresen@zlin.dk>2007-03-09 10:03:59 +0000
commitab653a879fc1ad673e872fa47ba0011ebbb2d4c6 (patch)
treeb464d04f873f7fd241316510f1934dc4841df7f9
parent7ef23d888819f173179766e1ead354339477fbf7 (diff)
downloadwgetpaste-ab653a879fc1ad673e872fa47ba0011ebbb2d4c6.tar.gz
A few more optimizations and changed error handling. show_usage is no longer shown unless specifically requested.
-rwxr-xr-xwgetpaste49
1 files changed, 23 insertions, 26 deletions
diff --git a/wgetpaste b/wgetpaste
index 76cd35c..fad631f 100755
--- a/wgetpaste
+++ b/wgetpaste
@@ -58,7 +58,6 @@ DEFAULT_EXPIRATION="${DEFAULT_EXPIRATION:-1 month}"
### usage
show_usage() {
- [[ -n "$*" ]] && echo "$*"
echo "Usage: ${0} [options] [file]"
echo
echo "Options:"
@@ -86,7 +85,6 @@ show_usage() {
echo
echo "Defaults (DEFAULT_{NICK,SERVICE,LANGUAGE,EXPIRATION}[_\${SERVICE}]) can be"
echo "overridden globally in /etc/wgetpaste or per user in ~/.wgetpaste."
- [[ -n "$*" ]] && exit 1
}
### services
@@ -364,12 +362,24 @@ done
# set the converted options as input
set -- "${ARGS[@]}"
-# if you know a better option (like getopts) which provides the same features
-# please let me know how.
+no_argument() {
+ echo "${0}: option requires an argument ${1}" 1>&2
+ exit 1
+}
+
+get_filename() {
+ if [[ -f "${1}" ]]; then
+ SOURCE="${1}"
+ else
+ echo "${0}: ${1}: No such file found. " 1>&2
+ exit 1
+ fi
+}
+
while [[ ! -z "${1}" ]]; do
case "${1}" in
-c | --command )
- [[ -z "${2}" ]] && show_usage "${0}: option requires an argument -- c" 1>&2 && exit 1
+ [[ -z "${2}" ]] && no_argument "${1}"
SOURCE="command"
COMMANDS[${#COMMANDS[*]}]="${2}"
shift 2
@@ -380,12 +390,12 @@ while [[ ! -z "${1}" ]]; do
shift
;;
-d | --description )
- [[ -z "${2}" ]] && show_usage 1>&2 && exit 1
+ [[ -z "${2}" ]] && no_argument "${1}"
DESCRIPTION="${2}"
shift 2
;;
-e | --expiration )
- [[ -z "${2}" ]] && show_usage 1>&2 && exit 1
+ [[ -z "${2}" ]] && no_argument "${1}"
EXPIRATION_SET=true
EXPIRATION="${2}"
shift 2
@@ -395,8 +405,7 @@ while [[ ! -z "${1}" ]]; do
shift
;;
-h | --help )
- show_usage
- exit 0
+ show_usage && exit 0
;;
-i | --info )
INFO=true
@@ -407,7 +416,7 @@ while [[ ! -z "${1}" ]]; do
shift
;;
-l | --language )
- [[ -z "${2}" ]] && show_usage 1>&2 && exit 1
+ [[ -z "${2}" ]] && no_argument "${1}"
LANGUAGE_SET=true
LANGUAGE="${2}"
shift 2
@@ -417,7 +426,7 @@ while [[ ! -z "${1}" ]]; do
shift
;;
-n | --nick )
- [[ -z "${2}" ]] && show_usage 1>&2 && exit 1
+ [[ -z "${2}" ]] && no_argument "${1}"
NICK="$(escape "${2}")"
shift 2
;;
@@ -426,7 +435,7 @@ while [[ ! -z "${1}" ]]; do
shift
;;
-s | --service )
- [[ -z "${2}" ]] && show_usage "${BASENAME}: option requires an argument -- s" 1>&2 && exit 1
+ [[ -z "${2}" ]] && no_argument "${1}"
verify_service "${2}"
SERVICE="$(escape "${2}")"
shift 2
@@ -448,22 +457,10 @@ while [[ ! -z "${1}" ]]; do
shift
;;
-- )
- if [[ -f "${2}" ]]; then
- SOURCE="${2}"
- break
- else
- show_usage 1>&2
- exit 1
- fi
+ get_filename "${2}" && break
;;
*)
- if [[ -f "${1}" ]]; then
- SOURCE="${1}"
- shift
- else
- echo "${0}: ${1}: No such file found. " 1>&2
- exit 1
- fi
+ get_filename "${1}" && shift
;;
esac
done