changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/lib/cli/pkg.lisp

changeset 649: 6e5006dfe7b8
parent: 926d95e5fdc7
author: Richard Westhaver <ellis@rwest.io>
date: Thu, 12 Sep 2024 22:38:22 -0400
permissions: -rw-r--r--
description: clap parsing updates
96
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
1
 ;;; cli.lisp --- cli programming api and utils
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
2
 
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
3
 ;; This package contains a simple api and macros for building lisp CLI
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
4
 ;; programs.
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
5
 
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
6
 ;;; Commentary:
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
7
 
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
8
 ;; - inspired by: clingon, uiop
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
9
 
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
10
 ;; Basic assumptions at runtime:
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
11
 ;;   - running in a POSIX-compliant shell
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
12
 ;;   - output stream supports UTF-8
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
13
 
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
14
 ;; TODO 2023-10-14: install-ast, install-thunk, proc-args, etc should
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
15
 ;; return IR types - CLI-IR THUNK and CLI-IR respectively.
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
16
 
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
17
 ;; TODO 2023-10-14: rename cli-ast to cli-ir, install-ast to
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
18
 ;; install-ir, etc.
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
19
 
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents:
diff changeset
20
 ;;; Code:
237
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
21
 (defpackage :cli/shell
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
22
   (:use :cl :std)
284
597f34d43df7 x.lisp upgrades, skel upgrades, worked on shell reader macros
Richard Westhaver <ellis@rwest.io>
parents: 279
diff changeset
23
   (:nicknames :shell)
323
29b643913ea0 messing with shells, need :INPUT, :OUTPUT, and :WAIT params in skelfiles
Richard Westhaver <ellis@rwest.io>
parents: 310
diff changeset
24
   (:export :*shell* :*shell-directory* :*shell-input*))
237
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
25
 
426
3e721a3349a0 completed phase2 of clap migration
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
26
 (defpackage :cli/env
3e721a3349a0 completed phase2 of clap migration
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
27
   (:use :cl :std)
3e721a3349a0 completed phase2 of clap migration
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
28
   (:export :*default-global-env-var-names* :*default-local-env-var-names* :exec-path-list
477
c9b69040cb23 skel updates - lisp and rust systems
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
29
    :program-list :find-exe :ld-library-path-list :concat-env-table
c9b69040cb23 skel updates - lisp and rust systems
Richard Westhaver <ellis@rwest.io>
parents: 471
diff changeset
30
    :make-env-var))
426
3e721a3349a0 completed phase2 of clap migration
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
31
 
237
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
32
 (defpackage :cli/ansi
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
33
   (:use :cl :std)
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
34
   (:nicknames :ansi)
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
35
   (:export
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
36
    ;; ESC sequences
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
37
    :.ris :reset-to-initial-state
480
5540a3e32ba1 some work on toml
Richard Westhaver <ellis@rwest.io>
parents: 477
diff changeset
38
    ;; CSI sequences | cursor control
237
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
39
    :.cuu :cursor-up
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
40
    :.cud :cursor-down
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
41
    :.cuf :cursor-forward
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
42
    :.cub :cursor-backward
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
43
    :.cnl :cursor-next-line
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
44
    :.cpl :cursor-preceding-line
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
45
    :.cha :cursor-horizontal-absolute
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
46
    :.cup :cursor-position
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
47
    :.vpa :vertical-position-absolute
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
48
    :.vpr :vertical-position-relative
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
49
    :.vpb :vertical-position-backward
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
50
    :.scosc :save-cursor-position
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
51
    :.scorc :restore-cursor-position
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
52
    :.ed :erase-in-display :erase-below :erase-above :erase :erase-saved-lines
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
53
    :.el :erase-in-line :erase-right :erase-left :erase-line
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
54
    :.sgr :select-graphic-rendition
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
55
    :.dsr :device-status-report
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
56
    ;; DEC private mode set and reset
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
57
    :.decset :dec-private-mode-set
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
58
    :.decrst :dec-private-mode-reset
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
59
    :show-cursor :hide-cursor
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
60
    :use-alternate-screen-buffer :use-normal-screen-buffer
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
61
    ;; common
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
62
    :clear
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
63
    :home
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
64
    ;; stty
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
65
    :set-tty-mode))
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
66
 
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
67
 (defpackage :cli/prompt
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
68
   (:use :cl :std)
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
69
   (:export
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
70
    :completing-read
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
71
    :defprompt))
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
72
    
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
73
 (defpackage :cli/progress
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
74
   (:use :cl :std)
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
75
   (:export
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
76
    :update-progress
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
77
    :with-progress-bar
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
78
    :*progress-bar*
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
79
    :*progress-bar-enabled*
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
80
    :start-progress-display
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
81
    :finish-progress-display
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
82
    :progress-mutex
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
83
    :uncertain-size-progress-bar
586
7ce855f76e1d net/fetch upgrades, fixes, net/err -> net/condition
Richard Westhaver <ellis@rwest.io>
parents: 480
diff changeset
84
    :progress-bar
7ce855f76e1d net/fetch upgrades, fixes, net/err -> net/condition
Richard Westhaver <ellis@rwest.io>
parents: 480
diff changeset
85
    :with-progress-maybe))
237
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
86
 
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
87
 (defpackage :cli/spark
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
88
   (:use :cl :std)
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
89
   (:export
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
90
    :spark :*ticks*
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
91
    :vspark :*vticks*))
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
92
 
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
93
 (defpackage :cli/repl
381
386d51cf61ca add ffi/readline, net updates
Richard Westhaver <ellis@rwest.io>
parents: 377
diff changeset
94
   (:use :cl :std :cli/progress :cli/spark)
237
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
95
   (:export :load-acl-repl :start-rl-repl))
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
96
 
4e6838e03f61 add midi
Richard Westhaver <ellis@rwest.io>
parents: 217
diff changeset
97
 (defpackage :cli/ed
426
3e721a3349a0 completed phase2 of clap migration
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
98
   (:use :cl :std :cli/env)
3e721a3349a0 completed phase2 of clap migration
Richard Westhaver <ellis@rwest.io>
parents: 404
diff changeset
99
   (:export :run-emacs :run-emacsclient :org-store-link))
648
926d95e5fdc7 cli/multi and slime-cape fixes
Richard Westhaver <ellis@rwest.io>
parents: 586
diff changeset
100
 
926d95e5fdc7 cli/multi and slime-cape fixes
Richard Westhaver <ellis@rwest.io>
parents: 586
diff changeset
101
 (defpackage :cli/multi
649
6e5006dfe7b8 clap parsing updates
Richard Westhaver <ellis@rwest.io>
parents: 648
diff changeset
102
   (:use :cl :std)
648
926d95e5fdc7 cli/multi and slime-cape fixes
Richard Westhaver <ellis@rwest.io>
parents: 586
diff changeset
103
   (:export
926d95e5fdc7 cli/multi and slime-cape fixes
Richard Westhaver <ellis@rwest.io>
parents: 586
diff changeset
104
    #:define-multi-main
926d95e5fdc7 cli/multi and slime-cape fixes
Richard Westhaver <ellis@rwest.io>
parents: 586
diff changeset
105
    #:make-symlinks))