aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom Willemsen2013-03-21 21:39:56 +0100
committerGravatar Tom Willemsen2013-03-21 21:39:56 +0100
commit14aa1286439407e9273abd952522bc6e713bd660 (patch)
tree3472981a29d3e052ee03f44af6c993b98278e205
parentf70b12c1c9db537c72426e446932c673f288b4d3 (diff)
downloadclark-14aa1286439407e9273abd952522bc6e713bd660.tar.gz
clark-14aa1286439407e9273abd952522bc6e713bd660.zip
Extract parse-args from clark
Keep functions nice and small.
-rw-r--r--clark.lisp14
1 files changed, 12 insertions, 2 deletions
diff --git a/clark.lisp b/clark.lisp
index aa4ea35..b7bb4ff 100644
--- a/clark.lisp
+++ b/clark.lisp
@@ -45,6 +45,17 @@ The result contains the url and the name of the bookmark."
(intern (concatenate 'string (string-upcase base) "-COMMAND")
:org.ryuslash.clark))
+(defun parse-args (args)
+ "Parse command-line arguments ARGS.
+
+The executable name should already have been removed."
+ (let ((cmd-name (make-command-name (car args))))
+ (if (fboundp cmd-name)
+ (funcall cmd-name (cdr args))
+ (progn
+ (format t "Unknown command: ~A~%" (car args))
+ (help-command nil)))))
+
(defun print-bookmark (bm)
"Print information about bookmark BM.
@@ -63,7 +74,6 @@ Connect to the database, parse command-line arguments, execute and
then disconnect."
(check-db "test2.db")
(if (> (length args) 1)
- (let* ((cmd-name (make-command-name (cadr args))))
- (when (fboundp cmd-name) (funcall cmd-name (cdr args))))
+ (parse-args (cdr args))
(map nil #'print-bookmark (get-bookmarks)))
(disconnect *db*))