changelog shortlog graph tags branches changeset files revisions annotate raw help

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

changeset 698: 96958d3eb5b0
parent: 517c65b51e6b
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
1 ;;; cli/clap/proto.lisp --- Clap Protocol
2 
3 ;;
4 
5 ;;; Code:
6 (in-package :cli/clap/proto)
7 
8 (define-condition clap-condition () ())
9 (eval-always
10  (deferror clap-error (clap-condition) ())
11  (defwarning clap-warning (clap-condition) ())
12  (deferror clap-simple-error (simple-error clap-error) () (:auto t))
13  (deferror clap-unknown-argument (clap-error unknown-argument) ())
14  (deferror clap-missing-argument (clap-error missing-argument)
15  ((kind :initarg :kind :initform nil)))
16  (deferror clap-invalid-argument (clap-error invalid-argument) ())
17  (defwarning clap-simple-warning (simple-warning clap-warning) () (:auto t)))
18 
19 (defun clap-unknown-argument (arg kind)
20  (error 'clap-unknown-argument :name arg :kind kind))
21 
22 (defun clap-missing-argument (arg kind)
23  (error 'clap-missing-argument :item arg :kind kind))
24 
25 (defun clap-invalid-argument (arg &key reason kind)
26  (error 'clap-invalid-argument :name arg :kind kind :reason reason))
27 
28 (defgeneric cmds (self))
29 (defgeneric opts (self))
30 
31 (defgeneric cli-args (self)
32  (:method ((self null)) (args)))
33 
34 (defgeneric push-cmd (cmd place))
35 
36 (defgeneric push-opt (opt place))
37 
38 (defgeneric pop-cmd (place))
39 
40 (defgeneric pop-opt (place))
41 
42 (defgeneric find-cmd (self name &optional active))
43 
44 (defgeneric (setf find-cmd) (new self name &optional active))
45 
46 (defgeneric find-opt (self name &optional active))
47 
48 (defgeneric (setf find-opt) (new self name &optional active))
49 
50 (defgeneric find-opts (self name &key active recurse))
51 
52 (defgeneric active-cmds (self))
53 
54 (defgeneric active-opts (self))
55 
56 (defgeneric activate-opt (self))
57 
58 (defgeneric activate-cmd (self))
59 
60 (defgeneric find-short-opts (self ch &key))
61 
62 (defgeneric call-opt (self arg))
63 
64 (defgeneric do-opt (self))
65 
66 (defgeneric do-opts (self))
67 
68 (defgeneric call-cmd (self args opts))
69 
70 (defgeneric do-cmd (self)
71  (:documentation "Run the command SELF with args parsed at runtime."))
72 
73 (defgeneric print-help (self &optional stream)
74  (:documentation "Format cli SELF as a helpful string."))
75 
76 (defgeneric print-version (self &optional stream)
77  (:documentation "Print the version of SELF."))
78 
79 (defgeneric print-usage (self &optional stream)
80  (:documentation "Format cli SELF as a useful string."))
81 
82 (defgeneric handle-unknown-opt (self opt)
83  (:documentation "Handle an unknown cli-opt."))
84 
85 (defgeneric handle-missing-opt (self opt)
86  (:documentation "Handle a missing cli-opt."))
87 
88 (defgeneric handle-invalid-opt (self opt &optional reason)
89  (:documentation "Handle an invalid cli-opt."))
90 
91 (defgeneric handle-unknown-arg (self arg)
92  (:documentation "Handle an unknown cli-arg."))
93 
94 (defgeneric handle-missing-arg (self arg)
95  (:documentation "Handle a missing cli-arg."))
96 
97 (defgeneric handle-invalid-arg (self arg &optional reason)
98  (:documentation "Handle an invalid cli-arg."))
99 
100 (defgeneric cli-equal (a b))