Coverage report: /home/ellis/comp/core/lib/cli/tools/pkg.lisp
Kind | Covered | All | % |
expression | 0 | 56 | 0.0 |
branch | 0 | 0 | nil |
Key
Not instrumented
Conditionalized out
Executed
Not executed
Both branches taken
One branch taken
Neither branch taken
1
;;; pkg.lisp --- CLI Tools
3
;; Convenience functions for working with common CLI programs
8
(defparameter *cli-tool-packages* `(,(package-name *package*)))
9
(setq *defpkg-hook* (lambda (x) (pushnew (package-name x) *cli-tool-packages* :test 'string=)))
11
(defpkg :cli/tools/proto
12
(:use :cl :std :cli/env :config :ast)
13
(:export :define-cli-tool :*cli-tools* :cli-tool-config
16
(defpkg :cli/tools/term
17
(:use :cl :std :cli/tools/proto :cli/env :config :toml :ast)
19
:*term* :*alacritty-config-path*
20
:alacritty-config :term-config
22
:term-error :load-alacritty-config
25
:run-script :run-scriptreplay
26
:run-fbterm :*fbterm* :fbterm-error))
29
(:use :cl :std :cli/tools/proto :cli/env)
33
(defpkg :cli/tools/tmux
34
(:use :cl :std :cli/tools/proto :cli/env :cli/tools/term)
35
(:import-from :obj/config
36
:defconfig :make-config :find-config)
38
:*tmux-user-config-path*
39
:*tmux-system-config-path*
40
:*default-tmux-socket*
50
(:use :cl :std :cli/tools/proto :cli/env)
67
(defpkg :cli/tools/build
68
(:use :cl :std :cli/tools/proto :cli/env)
79
(defpkg :cli/tools/media
80
(:use :cl :std :cli/tools/proto :cli/env :config :ini :ast)
105
(defpkg :cli/tools/go
106
(:nicknames :tools/go)
107
(:use :cl :std :cli/tools/proto :cli/env)
114
(defpkg :cli/tools/plot
115
(:nicknames :tools/plot)
116
(:use :cl :std :cli/tools/proto :cli/env)
124
:run-dot :dot-error :*dot*))
126
(defpkg :cli/tools/net
127
(:use :cl :std :cli/tools/proto :cli/env :uri :config :ast :ini)
128
(:import-from :std/os :with-umask)
138
:wg-generate-key-files
147
:*easy-rsa-directory*
148
:*easy-rsa-vars-file*
172
:run-transmission-remote
173
:run-transmission-daemon
174
:transmission-remote-error
175
:*transmission-remote*
176
:transmission-daemon-error
177
:*transmission-daemon*))
179
(defpkg :cli/tools/pacman
180
(:use :cl :std :cli/tools/proto :cli/env :config :ast)
181
(:export :*pacman* :run-pacman :pacman-error
182
:pacman-upgrade :pacman-config :load-pacman-config :makepkg
183
:makepkg-config :load-makepkg-config :makepkg-error))
185
(defpkg :cli/tools/mail
186
(:use :cl :std :cli/tools/proto :cli/env)
187
(:export :mail-error :*mail-program* :run-notmuch :run-offlineimap :*notmuch* :*offlineimap*
194
(defpkg :cli/tools/sys
195
(:use :cl :std :cli/tools/proto :cli/env)
196
(:export :*systemctl* :run-systemd :run-systemctl
204
(defpkg :cli/tools/rust
205
(:nicknames :tools/rust)
206
(:use :cl :std :cli/tools/proto :cli/env)
217
(defpkg :cli/tools/sbcl
218
(:use :cl :std :cli/tools/proto :cli/env)
224
:*sbcl-runtime-options*
225
:*sbcl-toplevel-options*))
227
(defpkg :cli/tools/virt
228
(:use :cl :std :cli/tools/proto :cli/env)
229
(:export :*buildah* :*podman* :*qemu*
230
:run-buildah :run-podman :run-qemu :podman-machine-upgrade
231
:start-podman-service :find-qemu-exe :run-qemu-img))
233
(setq *defpkg-hook* nil)
235
(in-package :cli/tools/proto)
237
(defconfig cli-tool-config () ())
239
(defvar *cli-tools* nil)
241
(define-condition cli-tool-error (simple-error) ())
243
(defmacro define-cli-tool (name args &body body)
244
"Define a new cli tool with a NAME-error condition, a *NAME* variable, and a
247
ARGS and BODY are parsed as the args and body of the run-NAME function."
248
(with-gensyms (var err run)
249
(let ((%name (string name)))
251
var (symbolicate #\* %name #\*)
252
err (symbolicate %name "-ERROR")
253
run (symbolicate "RUN-" %name))
256
(find-exe ,(etypecase name
258
(symbol (string-downcase %name)))))
259
,@(when var `((pushnew ,name *cli-tools*)))
260
(deferror ,err (cli-tool-error) () (:auto t))
261
(defun ,run ,args ,@body)))))