Coverage report: /home/ellis/comp/core/lib/cli/cli.lisp
Kind | Covered | All | % |
expression | 0 | 85 | 0.0 |
branch | 0 | 2 | 0.0 |
Key
Not instrumented
Conditionalized out
Executed
Not executed
Both branches taken
One branch taken
Neither branch taken
1
;;; cli.lisp --- CLI Top-level Packages
10
(:import-from :time :format-timestring :timestamp)
11
#.`(:use-reexport ,@cli/int:*cli-packages*)
12
(:export :sudop :call-with-sudo :with-sudo :pretty-log-message :*sudo-output* :ensure-sudo))
17
#.`(:use-reexport ,@cli/int:*cli-tool-packages*))
23
:*argc* :*args* :*optc* :*opts*
27
#.`(:use-reexport ,@cli/int:*cli-clap-packages*))
30
(:use :cl :std :cli :tools :clap))
33
(pushnew :cli *features*)
39
"Return T if effective user appears to be root."
40
(zerop (sb-posix:geteuid)))
42
(defvar *sudo-output* t)
44
(defun call-with-sudo (str &optional (output *sudo-output*))
45
(sb-ext:run-program (find-exe "sudo") `("-S" ,@(split-sequence #\space str)) :input t :output output))
48
"Run sudo with input from *standard-input*, validating the credential cache
50
(unless (sudop) (sb-ext:run-program (find-exe "sudo") '("-v") :input t :output *sudo-output*)))
52
(defmacro with-sudo (&body body)
53
"Eval BODY, a list of shell command strings, with sudo privileges."
54
`(progn ,@(mapcar (lambda (x) `(call-with-sudo ,x)) body)))
56
;;; Pretty Log Messages
57
(defclass pretty-log-message (simple-log-message) ())
59
(defmethod format-message (stream (message pretty-log-message))
60
(let ((*standard-output* stream))
61
(format stream log::*simple-log-message-formatter*
62
(with-output-to-string (*standard-output*)
64
(format-timestring *standard-output*
66
:format log::*log-timestamp-format*)
68
(with-output-to-string (*standard-output*)
70
(print (level message) *standard-output*)
72
(with-output-to-string (*standard-output*)
74
(print (log::tags message) *standard-output*)
76
(format-message nil (log::content message)))))