changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/lib/cli/clap/proto.lisp

changeset 652: 328e1ff73938
parent: 6e5006dfe7b8
child: 65102f74d1ae
author: Richard Westhaver <ellis@rwest.io>
date: Sat, 14 Sep 2024 23:55:38 -0400
permissions: -rw-r--r--
description: graph and cli updates
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: 404
diff changeset
1
 ;;; cli/clap/proto.lisp --- Clap Protocol
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
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: 404
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: 404
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: 404
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/proto)
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: 404
diff changeset
7
 
645
3e6a17fb5712 clap upgrades
Richard Westhaver <ellis@rwest.io>
parents: 625
diff changeset
8
 (define-condition clap-condition () ())
3e6a17fb5712 clap upgrades
Richard Westhaver <ellis@rwest.io>
parents: 625
diff changeset
9
 (eval-always
3e6a17fb5712 clap upgrades
Richard Westhaver <ellis@rwest.io>
parents: 625
diff changeset
10
   (deferror clap-error (clap-condition) ())
3e6a17fb5712 clap upgrades
Richard Westhaver <ellis@rwest.io>
parents: 625
diff changeset
11
   (defwarning clap-warning (clap-condition) ())
3e6a17fb5712 clap upgrades
Richard Westhaver <ellis@rwest.io>
parents: 625
diff changeset
12
   (deferror clap-simple-error (simple-error clap-error) () (:auto t))
3e6a17fb5712 clap upgrades
Richard Westhaver <ellis@rwest.io>
parents: 625
diff changeset
13
   (deferror clap-unknown-argument (clap-error unknown-argument) ())
646
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
14
   (deferror clap-missing-argument (clap-error missing-argument)
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
15
       ((kind :initarg :kind :initform nil)))
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
16
   (deferror clap-invalid-argument (clap-error invalid-argument) ())
645
3e6a17fb5712 clap upgrades
Richard Westhaver <ellis@rwest.io>
parents: 625
diff changeset
17
   (defwarning clap-simple-warning (simple-warning clap-warning) () (:auto t)))
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: 404
diff changeset
18
 
652
328e1ff73938 graph and cli updates
Richard Westhaver <ellis@rwest.io>
parents: 649
diff changeset
19
 (defun clap-unknown-argument (arg kind)
646
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
20
   (error 'clap-unknown-argument :name arg :kind kind))
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
21
 
652
328e1ff73938 graph and cli updates
Richard Westhaver <ellis@rwest.io>
parents: 649
diff changeset
22
 (defun clap-missing-argument (arg kind)
646
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
23
   (error 'clap-missing-argument :item arg :kind kind))
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
24
 
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
25
 (defun clap-invalid-argument (arg &key reason kind)
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
26
   (error 'clap-invalid-argument :name arg :kind kind :reason reason))
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: 404
diff changeset
27
 
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
28
 (defgeneric push-cmd (cmd place))
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
29
 
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
30
 (defgeneric push-opt (opt place))
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
31
 
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
32
 (defgeneric pop-cmd (place))
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
33
 
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
34
 (defgeneric pop-opt (place))
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
35
 
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
36
 (defgeneric find-cmd (self name &optional active))
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
37
 
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
38
 (defgeneric find-opts (self name &key active recurse))
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
39
 
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
40
 (defgeneric active-cmds (self))
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
41
 
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
42
 (defgeneric active-opts (self &optional global))
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
43
 
649
6e5006dfe7b8 clap parsing updates
Richard Westhaver <ellis@rwest.io>
parents: 646
diff changeset
44
 (defgeneric activate-opt (self))
6e5006dfe7b8 clap parsing updates
Richard Westhaver <ellis@rwest.io>
parents: 646
diff changeset
45
 
6e5006dfe7b8 clap parsing updates
Richard Westhaver <ellis@rwest.io>
parents: 646
diff changeset
46
 (defgeneric activate-cmd (self))
6e5006dfe7b8 clap parsing updates
Richard Westhaver <ellis@rwest.io>
parents: 646
diff changeset
47
 
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: 404
diff changeset
48
 (defgeneric find-short-opts (self ch &key))
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
49
 
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
50
 (defgeneric call-opt (self arg))
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
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: 404
diff changeset
52
 (defgeneric do-opt (self))
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
53
 
625
e49442cd6010 cli tweaks
Richard Westhaver <ellis@rwest.io>
parents: 479
diff changeset
54
 (defgeneric do-opts (self &optional global))
e49442cd6010 cli tweaks
Richard Westhaver <ellis@rwest.io>
parents: 479
diff changeset
55
 
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: 404
diff changeset
56
 (defgeneric call-cmd (self 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: 404
diff changeset
57
 
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
58
 (defgeneric do-cmd (self)
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
59
   (:documentation "Run the command SELF with args parsed at runtime."))
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
60
 
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
61
 (defgeneric print-help (self &optional stream)
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
62
   (:documentation "Format cli SELF as a helpful string."))
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
63
 
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
64
 (defgeneric print-version (self &optional stream)
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
65
   (:documentation "Print the version of SELF."))
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
66
 
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
67
 (defgeneric print-usage (self &optional stream)
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
68
   (:documentation "Format cli SELF as a useful string."))
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
69
 
646
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
70
 (defgeneric handle-unknown-opt (self opt)
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
71
   (:documentation "Handle an unknown cli-opt."))
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
72
 
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
73
 (defgeneric handle-missing-opt (self opt)
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
74
   (:documentation "Handle a missing cli-opt."))
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
75
 
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
76
 (defgeneric handle-invalid-opt (self opt &optional reason)
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
77
   (:documentation "Handle an invalid cli-opt."))
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: 404
diff changeset
78
 
646
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
79
 (defgeneric handle-unknown-arg (self arg)
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
80
   (:documentation "Handle an unknown cli-arg."))
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: 404
diff changeset
81
 
646
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
82
 (defgeneric handle-missing-arg (self arg)
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
83
   (:documentation "Handle a missing cli-arg."))
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
84
 
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
85
 (defgeneric handle-invalid-arg (self arg &optional reason)
95fd920af398 error handling methods for clap
Richard Westhaver <ellis@rwest.io>
parents: 645
diff changeset
86
   (:documentation "Handle an invalid cli-arg."))
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: 404
diff changeset
87
 
0f0e5f9b5c55 add emacs/babel.org, finished clap refactor phase 1, test system fixes and more top-level packages
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
88
 (defgeneric cli-equal (a b))