cli

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

pkg.lisp
ansi.lisp
env.lisp
progress.lisp
spark.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/mail.lisp
tools/fs.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
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/SBCL
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/CLAP/VARS
CLI/ED
CLI/TOOLS/SYS
CLI/CLAP/SIMPLE
CLI/TOOLS/CC
CLI
CLI/SHELL
*SUDO*
*NO-EXIT*
CLAP-MISSING-ARGUMENT
DO-OPTS
RUN-EMACS
LONG-OPT-HAS-EQ-P
MAKE-ENV-VAR
MAKE-CMDS
CURSOR-HORIZONTAL-ABSOLUTE
FIND-SHORT-OPTS
CLI-NODE-KIND
PUSH-CMD
IF-SUDO
DEFOPT
MAKE-CLI
FIND-EXE
PRINT-HELP
CLAP-ERROR
SET-PACKAGE-CLI
ACTIVE-OPTS
SPARK
CURSOR-FORWARD
.DSR
*DEFAULT-LOCAL-ENV-VAR-NAMES*
.CNL
.SGR
CLAP-INVALID-ARGUMENT
CURSOR-DOWN
PACKAGE-CLI
WITH-SUDO
CLI-CMD
DEFAULT-OPT-THUNK
UNCERTAIN-SIZE-PROGRESS-BAR
EXEC-PATH-LIST
LOAD-ENV
OPT-KEYWORD-P
USE-NORMAL-SCREEN-BUFFER
CMDS
PROGRAM-LIST
CLAP-SIMPLE-ERROR
CLI-OPT-KIND-P
*TICKS*
PASRE-NUM-OP
WITH-PROGRESS-MAYBE
PRINT-USAGE
.CHA
WITH-CLI-ARGS
DEC-PRIVATE-MODE-RESET
KEEP-AST-OPT
.CPL
.DECSET
PARSE-FILE-OP
*CLI*
DEFAULT-TOPLEVEL-INIT
CLI-LOCK-P
CLAP-UNKNOWN-ARGUMENT
WITH-CLI
*DEFAULT-GLOBAL-ENV-VAR-NAMES*
CURSOR-PRECEDING-LINE
*ARGS*
.SCORC
CLI-CD
WHEN-SUDO
.ED
ERASE-IN-DISPLAY
PARSE-ARGS
PARSE-SYM-OP
SHORT-OPT-HAS-EQ-P
LOAD-ACL-REPL
MAKE-SYMLINKS
COMPLETING-READ
*CLI-GROUP-SEPARATOR*
ADD-PACKAGE-CMDS
CALL-OPT
.VPA
CLEAR
PARSE-CLI-LAMBDA-LIST
SLIME
MAKE-CLI-NODE
.VPR
SUDO?
CLI-ARGS
ADD-PACKAGE-OPT
%COMPOSE-KEYWORD-OPT
START-RL-REPL
SHOW-CURSOR
DO-CMDS
.CUF
HOME
.SCOSC
PARSE-STRING-OPT
ERASE
DEFPROMPT
ARG0
*ARG*
LONG-OPT-P
PARSE-DIR-OP
SELECT-GRAPHIC-RENDITION
LEVEL-OPT
ACTIVATE-CMD
PARSE-BOOL-OPT
SUDO-PROMPT
VERSION-OPT
PACKAGE-CMDS
CURSOR-NEXT-LINE
PACKAGE-OPTS
CLI-NODE-FORM
*SHELL-DIRECTORY*
ERASE-IN-LINE
OPT-STRING-PREFIX-EQ
*SHELL-INPUT*
EMACS-CONFIG
MAKE-OPT-PARSER
MAKE-CLI-AST
CURSOR-UP
RESET-TO-INITIAL-STATE
RUN-EMACSCLIENT
DEBUG-OPTS
ERASE-LINE
CLI-AST
ERASE-ABOVE
CLI-OPT-NAME
CLI-NODE
ACTIVE-CMDS
FINISH-PROGRESS-DISPLAY
LD-LIBRARY-PATH-LIST
GROUP-OPT-P
IELM
CLI-CMD-ARGS
*PROGRESS-BAR-ENABLED*
VSPARK
PARSE-KEY-OP
MAKE-SHORTY
CURSOR-POSITION
*OPTC*
CLI-NAME
PARSE-FORM-OPT
PROGRESS-MUTEX
PROC-ARGS
FIND-OPTS
*CLI-OPT-KINDS*
PARSE-LIST-OP
OPTS
START-PROGRESS-DISPLAY
USE-ALTERNATE-SCREEN-BUFFER
CLI-EQUAL
CLI
.CUU
WITH-EMACS
.RIS
VERTICAL-POSITION-ABSOLUTE
SAVE-CURSOR-POSITION
CLI-OPT
EDITOR-CONFIG
DEC-PRIVATE-MODE-SET
*ARGC*
WITH-CLI-HANDLERS
.CUD
EVAL-EMACS
UPDATE-PROGRESS
DEFAULT-CMD-THUNK
PROGRESS-BAR
*OPTS*
DO-OPT
.EL
*DEFAULT-CLI-CLASS*
DEFINE-CLI
RESTORE-CURSOR-POSITION
CLI-OPT-LOCK
ADD-PACKAGE-CMD
ADD-PACKAGE-OPTS
ERASE-SAVED-LINES
PUSH-OPT
ORG-STORE-LINK
CONCAT-ENV-TABLE
DEFMAIN
*VTICKS*
.DECRST
SHORT-OPT-P
HIDE-CURSOR
.CUP
*SHELL*
MAKE-OPTS
ERASE-LEFT
ERASE-RIGHT
.CUB
.VPB
VERTICAL-POSITION-BACKWARD
CURSOR-BACKWARD
SETOPT
LOAD-PACKAGE-CLI
DEFCMD
ERASE-BELOW
ARGP
DO-CMD
ACTIVATE-OPT
ARGS
FIND-OPT
PRINT-VERSION
VERTICAL-POSITION-RELATIVE
*PROGRESS-BAR*
DEVICE-STATUS-REPORT
DEFINE-MULTI-MAIN
*DEFAULT-CLI-DEF*
*ENV-TABLE*
HELP-OPT
FIND-CMD
*CLI-PACKAGE-TABLE*
GETOPT
CLI-OPT-VAL
CLAP-WARNING
SET-TTY-MODE
CLAP-SIMPLE-WARNING
WITH-PROGRESS-BAR
SBCL
CLAP-OPTS
CLAP-MAIN
CLI-AST
MIXED-ARGS
ANSI
SHELL-READER
SBCL-TOOLS
ENV
REPL
SPARK
PROGRESS

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.