changeset 51: | 8e71b315fca2 |
parent: | 9f2e9e647333 |
author: | Richard Westhaver <ellis@rwest.io> |
date: | Sun, 22 Sep 2024 21:29:45 -0400 |
permissions: | -rw-r--r-- |
description: | id updates |
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
1 | #+title: cli |
35 | 2 | #+author: Richard Westhaver |
3 | #+description: Command-line Interface Library |
|
44 | 4 | #+setupfile: ../../../clean.theme |
35 | 5 | #+filetags: lisp cli |
6 | #+property: header-args :dir ~/comp/core/ :exports both |
|
7 | #+setupfile: ../../../clean.theme |
|
8 | * Overview |
|
45 | 9 | :PROPERTIES: |
10 | :ID: fb7c1b49-e293-41b7-863c-f38eaa361080 |
|
11 | :END: |
|
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
12 | The =cli= library is a fully-featured toolkit for working with and |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
13 | building [[https://en.wikipedia.org/wiki/Command-line_interface][CLI]] programs. |
35 | 14 | ** dependencies |
45 | 15 | :PROPERTIES: |
16 | :ID: 5d0f369d-5de0-41b1-8288-2633a84c3a42 |
|
17 | :END: |
|
35 | 18 | #+begin_src lisp :results list |
19 | (ql:quickload :doc) |
|
20 | (let ((sys (asdf:find-system :cli))) |
|
21 | (asdf:system-depends-on sys)) |
|
22 | #+end_src |
|
23 | ||
24 | #+RESULTS: |
|
25 | - std |
|
26 | - log |
|
38 | 27 | - dat |
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
28 | - obj |
35 | 29 | |
30 | ** dependents |
|
45 | 31 | :PROPERTIES: |
32 | :ID: 6c86510a-2c59-48a6-91c3-8533ceb0dcda |
|
33 | :END: |
|
35 | 34 | #+begin_src lisp :results list |
35 | (ql:quickload :doc) |
|
36 | (let ((sys (doc:system-documentation :cli))) |
|
37 | (mapcar (lambda (s) (asdf:component-name (doc:doc-system s))) (doc:doc-dependents sys))) |
|
38 | #+end_src |
|
39 | ||
40 | #+RESULTS: |
|
38 | 41 | - user |
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
42 | - prelude |
38 | 43 | - packy |
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
44 | - box |
35 | 45 | - pod |
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
46 | - net |
35 | 47 | - vc |
48 | - skel |
|
49 | - cli/tests |
|
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
50 | - core/lib |
35 | 51 | |
52 | ** files |
|
45 | 53 | :PROPERTIES: |
54 | :ID: dc23dd4f-6025-40cb-90c7-982def7ef530 |
|
55 | :END: |
|
35 | 56 | #+begin_src lisp :output replace :results list |
57 | (mapcar (lambda (p) |
|
58 | (enough-namestring p (asdf:system-source-directory :cli))) |
|
59 | (doc:doc-files (doc:system-documentation :cli))) |
|
60 | #+end_src |
|
61 | ||
62 | #+RESULTS: |
|
63 | - pkg.lisp |
|
64 | - ansi.lisp |
|
65 | - env.lisp |
|
66 | - progress.lisp |
|
67 | - spark.lisp |
|
68 | - repl.lisp |
|
69 | - shell.lisp |
|
70 | - prompt.lisp |
|
71 | - ed.lisp |
|
38 | 72 | - tools/pkg.lisp |
73 | - tools/term.lisp |
|
35 | 74 | - tools/tmux.lisp |
75 | - tools/pacman.lisp |
|
38 | 76 | - tools/cc.lisp |
77 | - tools/systemd.lisp |
|
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
78 | - tools/wg.lisp |
38 | 79 | - tools/cargo.lisp |
80 | - tools/sbcl.lisp |
|
35 | 81 | - clap/pkg.lisp |
82 | - clap/ast.lisp |
|
83 | - clap/vars.lisp |
|
84 | - clap/util.lisp |
|
85 | - clap/macs.lisp |
|
86 | - clap/proto.lisp |
|
87 | - clap/opt.lisp |
|
88 | - clap/cmd.lisp |
|
89 | - clap/cli.lisp |
|
90 | - cli.lisp |
|
91 | ||
92 | ** packages |
|
45 | 93 | :PROPERTIES: |
94 | :ID: c62cb04c-1c86-4bbe-bd1e-b962c887b008 |
|
95 | :END: |
|
35 | 96 | #+begin_src lisp :output replace :results list |
97 | (mapcar (lambda (p) (package-name (doc:doc-package p))) |
|
98 | (doc:doc-packages (doc:system-documentation :cli))) |
|
99 | #+end_src |
|
100 | ||
101 | #+RESULTS: |
|
102 | - CLI/REPL |
|
103 | - CLI/CLAP/UTIL |
|
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
104 | - CLI/CLAP/PROTO |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
105 | - CLI/TOOLS/PACMAN |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
106 | - CLI/CLAP/OBJ |
35 | 107 | - CLI/ENV |
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
108 | - CLI/CLAP/MACS |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
109 | - CLI/TOOLS/SBCL |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
110 | - CLI/TOOLS/WG |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
111 | - CLI/TOOLS/SYSTEMD |
35 | 112 | - CLI/PROMPT |
113 | - CLI-USER |
|
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
114 | - CLI/PROGRESS |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
115 | - CLI/CLAP |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
116 | - CLI/TOOLS/TMUX |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
117 | - CLI/TESTS |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
118 | - CLI/ANSI |
35 | 119 | - CLI/SPARK |
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
120 | - CLI/TOOLS/TERM |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
121 | - CLI/CLAP/AST |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
122 | - CLI/CLAP/VARS |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
123 | - CLI/ED |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
124 | - CLI/TOOLS/CARGO |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
125 | - CLI/CLAP/SIMPLE |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
126 | - CLI/TOOLS/CC |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
127 | - CLI |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
128 | - CLI/SHELL |
35 | 129 | |
130 | ** tests |
|
45 | 131 | :PROPERTIES: |
132 | :ID: 7fa7ae69-b3a0-4bdf-907c-dacb25cb3662 |
|
133 | :END: |
|
35 | 134 | #+begin_src lisp :output replace |
135 | (ql:quickload :cli/tests) |
|
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
136 | (rt:in-suite :cli) |
35 | 137 | (print rt:*test-suite* nil) |
138 | #+end_src |
|
139 | ||
140 | #+RESULTS: |
|
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
141 | : #<RT:TEST-SUITE CLI [11:11:0:0] {1003038B23}> |
35 | 142 | |
143 | #+begin_src lisp :output replace |
|
144 | (rt:tests rt:*test-suite*) |
|
145 | #+end_src |
|
146 | ||
147 | #+RESULTS: |
|
148 | #+begin_example |
|
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
149 | (#<RT:TEST SBCL-TOOLS :fn SBCL-TOOLS-TEST787 {100303C973}> |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
150 | #<RT:TEST CLAP-MAIN :fn CLAP-MAIN-TEST786 {100303C8E3}> |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
151 | #<RT:TEST CLI-AST :fn CLI-AST-TEST785 {100303C823}> |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
152 | #<RT:TEST ENV :fn ENV-TEST784 {100303C793}> |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
153 | #<RT:TEST REPL :fn REPL-TEST783 {100303C703}> |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
154 | #<RT:TEST SPARK :fn SPARK-TEST782 {100303C673}> |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
155 | #<RT:TEST PROGRESS :fn PROGRESS-TEST781 {100303C5E3}> |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
156 | #<RT:TEST CLAP-OPTS :fn CLAP-OPTS-TEST780 {100303C553}> |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
157 | #<RT:TEST CLAP-BASIC :fn CLAP-BASIC-TEST779 {100303C493}> |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
158 | #<RT:TEST CLI-PROMPT :fn CLI-PROMPT-TEST778 {1003038F83}> |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
159 | #<RT:TEST ANSI :fn ANSI-TEST777 {1003038D33}>) |
35 | 160 | #+end_example |
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
161 | * Packages |
51 | 162 | :PROPERTIES: |
163 | :ID: 94d0e207-02b0-4289-84e1-19e5b74e819b |
|
164 | :END: |
|
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
165 | ** cli/clap |
51 | 166 | :PROPERTIES: |
167 | :ID: c703a68c-2eb1-4251-8671-d587d550b66a |
|
168 | :END: |
|
48
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
169 | - nicknames :: clap |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
170 | |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
171 | =clap= is a name borrowed from the [[https://github.com/clap-rs/clap][clap.rs]] Command Line Argument |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
172 | Parser. What can I say, it's a good acronym. |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
173 | |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
174 | Besides the system tests, you can find this package used in our lisp |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
175 | applications (=lisp/bin=). |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
176 | |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
177 | =clap= provides an object protocol and classes which parse input into |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
178 | a simple AST and execute the appropriate option and command handlers. |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
179 | |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
180 | Several macros form the public API used to build a CLI including |
9f2e9e647333
core documentation and stats
Richard Westhaver <ellis@rwest.io>
parents:
45
diff
changeset
|
181 | =defcommand=, =defopt=, =define-cli=, and =defmain=. |