core-cli: add doom-cli constructor

This commit is contained in:
Henrik Lissner 2019-11-09 02:23:58 -05:00
parent 135e7ffc89
commit cc1bbe0b7e
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -22,14 +22,28 @@ commands like `doom-cli-packages-install', `doom-cli-packages-update' and
(defvar doom--cli-groups (make-hash-table :test 'equal))
(defvar doom--cli-group nil)
;; TODO Constructors for optlist, arglist and fn
(cl-defstruct doom-cli
(name)
(cl-defstruct
(doom-cli
(:constructor nil)
(:constructor
make-doom-cli
(name &key desc aliases optlist arglist plist fn
&aux
(optlist
(cl-loop for (symbol options desc) in optlist
for ((_ . options) (_ . params))
= (seq-group-by #'stringp options)
collect
(make-doom-cli-option :symbol symbol
:flags options
:args params
:desc desc))))))
(name nil :read-only t)
(desc "TODO")
(aliases ())
(optlist ())
(arglist ())
(plist ())
aliases
optlist
arglist
plist
(fn (lambda (_) (print! "But nobody came!"))))
(cl-defstruct doom-cli-option
@ -165,19 +179,11 @@ BODY will be run when this dispatcher is called."
(setq plist (plist-put plist :group doom--cli-group)))
(puthash
name
(make-doom-cli :name (symbol-name name)
(make-doom-cli (symbol-name name)
:desc ,docstring
:aliases (mapcar #'symbol-name aliases)
:arglist ',arglist
:optlist
(cl-loop for (symbol options desc) in ',optlist
for ((_ . options) (_ . params))
= (seq-group-by #'stringp options)
collect
(make-doom-cli-option :symbol symbol
:flags options
:args params
:desc desc))
:optlist ',optlist
:plist plist
:fn
(lambda (--alist--)