Skip to content

Commit d52d56d

Browse files
committed
Add better condition definition
1 parent 8268a8b commit d52d56d

1 file changed

Lines changed: 30 additions & 11 deletions

File tree

beer-me.ros

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)