cli

The cli library is a fully-featured toolkit for working with and building CLI programs.

CLI/TERMINFO
CLI/REPL
CLI/TUI
CLI/CLAP/UTIL
CLI/TOOLS/GO
CLI/TOOLS/NET
CLI/CLAP/PROTO
CLI/TOOLS/MAIL
CLI/TOOLS/PACMAN
CLI/CLAP/OBJ
CLI/ENV
CLI/CLAP/MACS
CLI/TOOLS/MEDIA
CLI/TOOLS/SBCL
CLI/LINEDIT
CLI/TOOLS
CLI/TOOLS/RUST
CLI/PROMPT
CLI/TOOLS/FS
CLI-USER
CLI/PROGRESS
CLI/CLAP
CLI/TOOLS/PROTO
CLI/TOOLS/TMUX
CLI/TESTS
CLI/ANSI
CLI/SPARK
CLI/MULTI
CLI/TOOLS/TERM
CLI/CLAP/AST
CLI/TOOLS/PLOT
CLI/CLAP/VARS
CLI/ED
CLI/TOOLS/VIRT
CLI/TOOLS/SYS
CLI/CLAP/SIMPLE
CLI/TOOLS/CC
CLI
CLI/SHELL
std
log
dat
obj
gui
syn
packy
box
pod
vc
skel
bin/packy
bin/skel
bin/vc
bin/gen
bin/rdb
bin/pod
bin/mpk
bin/homer
bin/organ
rdb
net
cli/tests
core
pkg.lisp
ansi.lisp
env.lisp
progress.lisp
spark.lisp
terminfo.lisp
linedit.lisp
repl.lisp
shell.lisp
prompt.lisp
ed.lisp
tools/pkg.lisp
tools/term.lisp
tools/tmux.lisp
tools/pacman.lisp
tools/cc.lisp
tools/sys.lisp
tools/rust.lisp
tools/sbcl.lisp
tools/net.lisp
tools/media.lisp
tools/mail.lisp
tools/fs.lisp
tools/plot.lisp
clap/pkg.lisp
clap/ast.lisp
clap/vars.lisp
clap/util.lisp
clap/macs.lisp
clap/proto.lisp
clap/opt.lisp
clap/cmd.lisp
clap/cli.lisp
multi.lisp
tui.lisp
cli.lisp
CLAP-OPTS
CLAP-BASIC
CLAP-MAIN
CLI-AST
MIXED-ARGS
ANSI
SHELL-READER
SBCL-TOOLS
ENV
SPARK
PROGRESS
CLI-EQUAL
LOAD-ENV
PACKAGE-CLI
ACTIVE-OPTS
WITH-SUDO
SLIME
CURSOR-BACKWARD
DEC-PRIVATE-MODE-SET
UPDATE-PROGRESS
PARSE-SYM-OP
DEFAULT-CMD-THUNK
ADD-PACKAGE-OPT
COMPLETING-READ
ERASE-LINE
PRINT-VERSION
IF-SUDO
FIND-OPTS
DEFAULT-TOPLEVEL-INIT
EMACS-FIND-FILE
RESET-TO-INITIAL-STATE
*CLI-GROUP-SEPARATOR*
FIND-EXE
*ARG*
*OPTC*
DEBUG-OPTS
.DECSET
*ARGC*
DEFCMD
PARSE-LIST-OP
HOME
.VPR
PROGRESS-MUTEX
EDITOR-CONFIG
GETOPT
OPT-STRING-PREFIX-EQ
MAKE-ENV-VAR
.VPB
MAKE-SHORTY
VERTICAL-POSITION-ABSOLUTE
.DECRST
PRINT-HELP
DO-CMDS
.DSR
CLAP-MISSING-ARGUMENT
*VTICKS*
MAKE-CLI
CURSOR-HORIZONTAL-ABSOLUTE
CLAP-SIMPLE-ERROR
CLI-LOCK-P
PACKAGE-OPTS
ERASE-IN-LINE
ERASE-IN-DISPLAY
CLI-OPT
LONG-OPT-P
SETOPT
DO-OPT
ERASE-SAVED-LINES
DEFOPT
START-RL-REPL
LOAD-ACL-REPL
MAKE-OPT-PARSER
%COMPOSE-KEYWORD-OPT
FIND-CMD
EMACS-CONFIG
*ENV-TABLE*
.RIS
*ARGS*
CURSOR-DOWN
FIND-SHORT-OPTS
CLI-OPT-LOCK
PACKAGE-CMDS
CLI-CMD-ARGS
FIND-OPT
CURSOR-NEXT-LINE
WITH-PROGRESS-BAR
LONG-OPT-HAS-EQ-P
CLAP-UNKNOWN-ARGUMENT
DEFINE-CLI
VSPARK
USE-ALTERNATE-SCREEN-BUFFER
PARSE-DIR-OP
DO-OPTS
.CUF
PARSE-CLI-LAMBDA-LIST
CLI-NODE
ACTIVATE-OPT
*DEFAULT-LOCAL-ENV-VAR-NAMES*
CMDS
HELP-OPT
LOAD-PACKAGE-CLI
CALL-OPT
*SHELL-DIRECTORY*
CONCAT-ENV-TABLE
RUN-EMACSCLIENT
ARG0
CLAP-ERROR
UNCERTAIN-SIZE-PROGRESS-BAR
CLI-OPT-NAME
PUSH-OPT
HIDE-CURSOR
CLI
OPTS
PARSE-ARGS
ERASE-ABOVE
ORG-STORE-LINK
PROGRESS-BAR
WITH-CLI-ARGS
CLI-ARGS
SUDO?
*TICKS*
PROGRAM-LIST
*SHELL*
USE-NORMAL-SCREEN-BUFFER
CURSOR-UP
CLI-OPT-VAL
PASRE-NUM-OP
.CNL
DEFAULT-OPT-THUNK
ERASE-BELOW
.CPL
CLI-CD
CURSOR-PRECEDING-LINE
CURSOR-POSITION
*DEFAULT-CLI-CLASS*
ARGP
VERTICAL-POSITION-BACKWARD
SHOW-CURSOR
.CUP
ERASE
SET-TTY-MODE
DEFINE-MULTI-MAIN
SET-PACKAGE-CLI
LD-LIBRARY-PATH-LIST
SAVE-CURSOR-POSITION
.CUB
*SUDO*
EXEC-PATH-LIST
ACTIVATE-CMD
FINISH-PROGRESS-DISPLAY
PROC-ARGS
ADD-PACKAGE-OPTS
DEC-PRIVATE-MODE-RESET
MAKE-CMDS
RESTORE-CURSOR-POSITION
CLEAR
*DEFAULT-GLOBAL-ENV-VAR-NAMES*
OPT-KEYWORD-P
*CLI-OPT-KINDS*
PARSE-BOOL-OPT
RUN-EMACS
*CLI*
.SCORC
SPARK
.CUD
WITH-CLI
.SGR
CLI-NODE-FORM
PARSE-FORM-OPT
IELM
.VPA
ADD-PACKAGE-CMD
MAKE-OPTS
WITH-PROGRESS-MAYBE
WITH-CLI-HANDLERS
PRINT-USAGE
VERSION-OPT
PARSE-KEY-OP
DEFPROMPT
*PROGRESS-BAR*
DO-CMD
*DEFAULT-CLI-DEF*
EVAL-EMACS
ADD-PACKAGE-CMDS
CURSOR-FORWARD
*SHELL-INPUT*
MAKE-CLI-NODE
.ED
.CHA
CLI-CMD
DEFMAIN
VERTICAL-POSITION-RELATIVE
SELECT-GRAPHIC-RENDITION
GROUP-OPT-P
*CLI-PACKAGE-TABLE*
ERASE-LEFT
*OPTS*
CLAP-SIMPLE-WARNING
CLI-NAME
*NO-DEBUG*
PARSE-FILE-OP
*PROGRESS-BAR-ENABLED*
DEVICE-STATUS-REPORT
CLAP-WARNING
WHEN-SUDO
SHORT-OPT-HAS-EQ-P
LEVEL-OPT
CLI-OPT-KIND-P
SUDO-PROMPT
START-PROGRESS-DISPLAY
PARSE-STRING-OPT
ARGS
.EL
.CUU
*NO-EXIT*
CLI-NODE-KIND
KEEP-AST-OPT
MAKE-CLI-AST
CLI-AST
CLAP-INVALID-ARGUMENT
PUSH-CMD
ERASE-RIGHT
ACTIVE-CMDS
WITH-EMACS
SHORT-OPT-P
.SCOSC
MAKE-SYMLINKS

1. cli/clap

nicknames
clap

clap is a name borrowed from the clap.rs Command Line Argument Parser. What can I say, it's a good acronym.

Besides the system tests, you can find this package used in our lisp applications (bin).

clap provides an object protocol and classes which parse input into a simple AST and execute the appropriate option and command handlers.

Several macros form the public API used to build a CLI including defcommand, defopt, define-cli, and defmain.