@@ -36,6 +36,9 @@ is replaced with replacement."
3636 *config-dir*
3737 " .envlist" )))
3838
39+ (defparameter *query-type* nil )
40+
41+
3942(defun setup-default-queries ()
4043 (ensure-directories-exist *config-dir* )
4144 (unless (probe-file *env-file* )
@@ -55,21 +58,32 @@ is replaced with replacement."
5558 (car filter-pair)
5659 (cdr filter-pair)))))))
5760
58- (defun print-usage (&optional ctx)
59- (declare (ignorable ctx))
61+ (defun print-usage ()
6062 (format t " USAGE: beer-me [environment] <resource> [filters]" ))
6163
62- (define-condition missing-template (error ) ())
64+ (define-condition missing-template (error )
65+ ((query-type :initarg :query-type
66+ :initform nil
67+ :reader query-type)
68+ (filename :initarg :filename
69+ :initform nil
70+ :reader filename))
71+ (:report (lambda (condition stream )
72+ (format stream
73+ " Missing template file for ~A : ~A~& "
74+ (query-type condition )
75+ (filename condition )))))
76+
6377(defun get-query (query-type)
6478 (let ((filename (uiop :native-namestring
6579 (concatenate ' string
66- " ~/. config/ beer-me/ "
80+ * config-dir*
6781 query-type
6882 " .sql" ))))
6983 (if (probe-file filename)
7084 (uiop :read-file-string filename)
71- (error ' missing-template
72- :message ( format t " Missing template file for ~A : ~A~% " query-type filename)))))
85+ (error ' missing-template :query-type query-type :filename filename))))
86+
7387
7488(defun run-query (env-pair query-type filters)
7589 (if env-pair ; if we have a valid environment
@@ -102,10 +116,15 @@ is replaced with replacement."
102116 (declare (ignorable argv))
103117 (if (= (length argv) 0 )
104118 (print-usage)
105- (handler-bind ((error #' print-usage))
106- (setq *environments* (get-environments))
107- (multiple-value-bind (env-pair query-type filters) (get-args argv)
108- (setup-default-queries)
109- (run-query env-pair query-type filters)))))
119+ (handler-case (progn
120+ (setq *environments* (get-environments))
121+ (multiple-value-bind (env-pair query-type filters) (get-args argv)
122+ (setq *query-type* query-type)
123+ (setup-default-queries)
124+ (run-query env-pair query-type filters)))
125+
126+ (error (c) ; if we catch an error
127+ (format t " ~A " c))))) ; just write it out rather than dropping to debugger
128+
110129
111130; ;; vim: set ft=lisp lisp:
0 commit comments