changeset 643: | f901de70a80e |
parent: | 3e721a3349a0 |
child: | 3e6a17fb5712 |
author: | Richard Westhaver <ellis@rwest.io> |
date: | Tue, 10 Sep 2024 21:26:30 -0400 |
permissions: | -rw-r--r-- |
description: | opt fixes and test updates |
426
3e721a3349a0
completed phase2 of clap migration
Richard Westhaver <ellis@rwest.io>
parents:
419
diff
changeset
|
1 | ;;; cli/clap/util.lisp --- Clap Utilities |
419
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
2 | |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
3 | ;; |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
4 | |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
5 | ;;; Code: |
426
3e721a3349a0
completed phase2 of clap migration
Richard Westhaver <ellis@rwest.io>
parents:
419
diff
changeset
|
6 | (in-package :cli/clap/util) |
419
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
7 | |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
8 | (defun arg0 () (car sb-ext:*posix-argv*)) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
9 | (defun args () (cdr sb-ext:*posix-argv*)) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
10 | |
643
f901de70a80e
opt fixes and test updates
Richard Westhaver <ellis@rwest.io>
parents:
426
diff
changeset
|
11 | (declaim (inline long-opt-p long-opt-has-eq-p |
f901de70a80e
opt fixes and test updates
Richard Westhaver <ellis@rwest.io>
parents:
426
diff
changeset
|
12 | short-opt-p opt-group-p |
f901de70a80e
opt fixes and test updates
Richard Westhaver <ellis@rwest.io>
parents:
426
diff
changeset
|
13 | opt-string-prefix-eq)) |
f901de70a80e
opt fixes and test updates
Richard Westhaver <ellis@rwest.io>
parents:
426
diff
changeset
|
14 | |
419
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
15 | (defun long-opt-p (str) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
16 | (declare (simple-string str)) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
17 | (and (char= (aref str 0) (aref str 1) #\-) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
18 | (> (length str) 2))) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
19 | |
643
f901de70a80e
opt fixes and test updates
Richard Westhaver <ellis@rwest.io>
parents:
426
diff
changeset
|
20 | (defun long-opt-has-eq-p (str) |
f901de70a80e
opt fixes and test updates
Richard Westhaver <ellis@rwest.io>
parents:
426
diff
changeset
|
21 | "Return non-nil if STR is a long-opt which has an '=' somewhere, |
f901de70a80e
opt fixes and test updates
Richard Westhaver <ellis@rwest.io>
parents:
426
diff
changeset
|
22 | indicating a key/val pair without whitespace." |
f901de70a80e
opt fixes and test updates
Richard Westhaver <ellis@rwest.io>
parents:
426
diff
changeset
|
23 | (declare (simple-string str)) |
f901de70a80e
opt fixes and test updates
Richard Westhaver <ellis@rwest.io>
parents:
426
diff
changeset
|
24 | (when-let ((pos (position #\= str :test 'char=))) |
f901de70a80e
opt fixes and test updates
Richard Westhaver <ellis@rwest.io>
parents:
426
diff
changeset
|
25 | (cons (subseq str 2 pos) (subseq str (1+ pos))))) |
f901de70a80e
opt fixes and test updates
Richard Westhaver <ellis@rwest.io>
parents:
426
diff
changeset
|
26 | |
419
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
27 | (defun short-opt-p (str) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
28 | (declare (simple-string str)) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
29 | (and (char= (aref str 0) #\-) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
30 | (not (char= (aref str 1) #\-)) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
31 | (> (length str) 1))) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
32 | |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
33 | (defun opt-group-p (str) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
34 | (declare (simple-string str)) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
35 | (equalp str *cli-group-separator*)) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
36 | |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
37 | (defun opt-string-prefix-eq (ch str) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
38 | (declare (simple-string str) (character ch)) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
39 | (char= ch (aref str 0))) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
40 | |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
41 | ;; currently not in use |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
42 | (defun gen-thunk-ll (origin args) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
43 | (let ((a0 (list (symbolicate '$a 0) origin))) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
44 | (group |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
45 | (nconc (loop for i from 1 for a in args nconc (list (symbolicate '$a (the fixnum i)) a)) a0) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
46 | 2))) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
47 | |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
48 | (defun default-thunk (args opts) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
49 | (declare (ignore args opts)) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
50 | (values)) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
51 | |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
52 | (defun cli-opt-kind-p (s) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
53 | (declare (type symbol s)) |
0f0e5f9b5c55
add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
54 | (find s *cli-opt-kinds* :test 'string-equal)) |