changelog shortlog graph tags branches files raw help

Mercurial > core / changeset: bin updates

changeset 561: 42bc1432f217
parent 560: b9c64be96888
child 562: 18143155dc5c
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 26 Jul 2024 23:55:27 -0400
files: lisp/bin/homer.lisp lisp/bin/organ.lisp lisp/bin/packy.lisp lisp/bin/rdb.lisp lisp/bin/skel.lisp lisp/lib/cli/clap/macs.lisp lisp/lib/cli/clap/pkg.lisp
description: bin updates
     1.1--- a/lisp/bin/homer.lisp	Fri Jul 26 23:12:33 2024 -0400
     1.2+++ b/lisp/bin/homer.lisp	Fri Jul 26 23:55:27 2024 -0400
     1.3@@ -76,10 +76,10 @@
     1.4               (error "missing HOMER directory")))))))
     1.5 
     1.6 ;;; CLI
     1.7-(defopt homer-help (print-help $cli))
     1.8-(defopt homer-version (print-version $cli))
     1.9-(defopt homer-log-level (when $val (setq *log-level* :debug)))
    1.10-(defopt homer-force (when $val (setq *homer-force* t)))
    1.11+(defopt homer-help (print-help *cli*))
    1.12+(defopt homer-version (print-version *cli*))
    1.13+(defopt homer-log-level (when *arg* (setq *log-level* :debug)))
    1.14+(defopt homer-force (when *arg* (setq *homer-force* t)))
    1.15 
    1.16 (defcmd homer-show
    1.17   (describe *home-config*))
    1.18@@ -181,7 +181,7 @@
    1.19               (find-files src *home-hidden-paths*)))
    1.20       (error 'file-error :pathname src))))
    1.21 
    1.22-(define-cli $cli
    1.23+(define-cli *cli*
    1.24   :name "homer"
    1.25   :version "0.1.0"
    1.26   :description "user home manager"
    1.27@@ -200,11 +200,11 @@
    1.28 
    1.29 (defun run ()
    1.30   (let ((*log-level* :info))
    1.31-    (with-cli (opts cmds args) $cli
    1.32+    (with-cli (opts cmds args) *cli*
    1.33       (init-homer-vars)
    1.34       (load-homerc)
    1.35-      (do-cmd $cli)
    1.36-      (debug-opts $cli))))
    1.37+      (do-cmd *cli*)
    1.38+      (debug-opts *cli*))))
    1.39 
    1.40 (defmain ()
    1.41   (let ((*print-readably* t))
     2.1--- a/lisp/bin/organ.lisp	Fri Jul 26 23:12:33 2024 -0400
     2.2+++ b/lisp/bin/organ.lisp	Fri Jul 26 23:55:27 2024 -0400
     2.3@@ -4,36 +4,36 @@
     2.4 
     2.5 ;;; Code:
     2.6 (defpackage :bin/organ
     2.7-  (:use :cl :organ :std :cli :log)
     2.8+  (:use :cl :organ :std :cli :log :clap)
     2.9   (:export :main))
    2.10 
    2.11 (in-package :bin/organ)
    2.12-(defopt organ-help (print-help $cli))
    2.13-(defopt organ-version (print-version $cli))
    2.14-(defopt organ-log-level (setq *log-level* (if $val t :info)))
    2.15-;; (defopt organ-output (when $val (trace! (or $val "output.organ"))))
    2.16+(defopt organ-help (print-help *cli*))
    2.17+(defopt organ-version (print-version *cli*))
    2.18+(defopt organ-log-level (setq *log-level* (if *arg* t :info)))
    2.19+;; (defopt organ-output (when *arg* (trace! (or *arg* "output.organ"))))
    2.20 (defcmd organ-describe
    2.21-  (if $args
    2.22+  (if *args*
    2.23       ;; TODO typed args
    2.24-      (describe (org-parse :document (pathname (car $args))))
    2.25+      (describe (org-parse :document (pathname (car *args*))))
    2.26       (describe (org-parse :document #P"readme.org"))))
    2.27 
    2.28 (defcmd organ-inspect
    2.29-  (if $args
    2.30+  (if *args*
    2.31       ;; TODO typed args
    2.32-      (inspect (org-parse :document (pathname (car $args))))
    2.33+      (inspect (org-parse :document (pathname (car *args*))))
    2.34       (inspect (org-parse :document #P"readme.org"))))
    2.35 
    2.36 (defcmd organ-show
    2.37-  (if $args
    2.38-      (print (org-parse-lines t (uiop:read-file-string (car $args))))
    2.39+  (if *args*
    2.40+      (print (org-parse-lines t (uiop:read-file-string (car *args*))))
    2.41       (error! "missing file arg")))
    2.42 
    2.43 (defcmd organ-parse
    2.44-  (let ((input (if $args (car $args) #P"readme.org")))
    2.45+  (let ((input (if *args* (car *args*) #P"readme.org")))
    2.46     (describe (org-parse :document input))))
    2.47 
    2.48-(define-cli $cli
    2.49+(define-cli *cli*
    2.50   :name "organ"
    2.51   :version "0.0.1"
    2.52   :description "org-mode toolbox"
    2.53@@ -59,9 +59,9 @@
    2.54 
    2.55 (defun run ()
    2.56   (let ((*log-level* :info))
    2.57-    (with-cli (opts cmds args) $cli
    2.58-      (do-cmd $cli)
    2.59-      (debug-opts $cli))))
    2.60+    (with-cli (opts cmds args) *cli*
    2.61+      (do-cmd *cli*)
    2.62+      (debug-opts *cli*))))
    2.63 
    2.64 (defmain ()
    2.65   (run)
     3.1--- a/lisp/bin/packy.lisp	Fri Jul 26 23:12:33 2024 -0400
     3.2+++ b/lisp/bin/packy.lisp	Fri Jul 26 23:55:27 2024 -0400
     3.3@@ -1,17 +1,17 @@
     3.4 (defpackage :bin/packy
     3.5-  (:use :cl :std :sb-ext :cli :packy)
     3.6+  (:use :cl :std :sb-ext :cli :packy :clap)
     3.7   (:export :main))
     3.8 
     3.9 (in-package :bin/packy)
    3.10 
    3.11 ;;; CLI
    3.12-(defopt pk-help (print-help $cli))
    3.13-(defopt pk-version (print-version $cli))
    3.14-(defopt pk-log-level (when $val (setq *log-level* :debug)))
    3.15+(defopt pk-help (print-help *cli*))
    3.16+(defopt pk-version (print-version *cli*))
    3.17+(defopt pk-log-level (when *arg* (setq *log-level* :debug)))
    3.18 
    3.19 (defcmd pk-show)
    3.20 
    3.21-(define-cli $cli
    3.22+(define-cli *cli*
    3.23   :name "packy"
    3.24   :version "0.1.0"
    3.25   :description "Universal Package Manager"
    3.26@@ -25,9 +25,9 @@
    3.27 
    3.28 (defun run ()
    3.29   (let ((*log-level* :info))
    3.30-    (with-cli (opts cmds args) $cli
    3.31-      (do-cmd $cli)
    3.32-      (debug-opts $cli))))
    3.33+    (with-cli (opts cmds args) *cli*
    3.34+      (do-cmd *cli*)
    3.35+      (debug-opts *cli*))))
    3.36 
    3.37 (defmain ()
    3.38   (let ((*print-readably* t))
     4.1--- a/lisp/bin/rdb.lisp	Fri Jul 26 23:12:33 2024 -0400
     4.2+++ b/lisp/bin/rdb.lisp	Fri Jul 26 23:55:27 2024 -0400
     4.3@@ -2,18 +2,18 @@
     4.4 
     4.5 ;;; Code:
     4.6 (uiop:define-package :bin/rdb
     4.7-    (:use :cl :rdb :std :cli/clap :log)
     4.8+    (:use :cl :rdb :std :cli/clap :log :clap)
     4.9   (:export :main))
    4.10 
    4.11 (in-package :bin/rdb)
    4.12 (rocksdb:load-rocksdb t)
    4.13-(defopt rdb-help (print-help $cli))
    4.14-(defopt rdb-version (print-version $cli))
    4.15-(defopt rdb-log-level (when $val (setq *log-level* :debug)))
    4.16+(defopt rdb-help (print-help *cli*))
    4.17+(defopt rdb-version (print-version *cli*))
    4.18+(defopt rdb-log-level (when *arg* (setq *log-level* :debug)))
    4.19 (defvar *rdb*)
    4.20-(defopt rdb-target-db (setq *rdb* (create-db (or $val "rdb") :open nil)))
    4.21+(defopt rdb-target-db (setq *rdb* (create-db (or *arg* "rdb") :open nil)))
    4.22 
    4.23-;; (defopt rdb-config (init-rdb-user-config (parse-file-opt $val)))
    4.24+;; (defopt rdb-config (init-rdb-user-config (parse-file-opt *arg*)))
    4.25 
    4.26 (defcmd rdb-new
    4.27   (set-opt *rdb* :error-if-exists t)
    4.28@@ -21,8 +21,8 @@
    4.29   (println (rdb-name *rdb*)))
    4.30 
    4.31 (defcmd rdb-show
    4.32-  (let ((db-path (cli-opt-val (car (find-opts $cli "db")))))
    4.33-    (if (and (null db-path) (zerop $argc))
    4.34+  (let ((db-path (cli-opt-val (car (find-opts *cli* "db")))))
    4.35+    (if (and (null db-path) (zerop *argc*))
    4.36         (mapc (lambda (x) (println (format nil "~a ~a" (car x) (cdr x))))
    4.37               (hash-table-alist (backfill-opts (default-rdb-opts) :full t)))
    4.38         (with-db (db (create-db db-path :open t))
    4.39@@ -38,18 +38,18 @@
    4.40                   finally (rocksdb::rocksdb-iter-destroy %it)))))))
    4.41 
    4.42 (defcmd rdb-set
    4.43-  (if (> 2 $argc)
    4.44+  (if (> 2 *argc*)
    4.45       (rdb-error "missing args: KEY VAL")
    4.46       (with-db (db *rdb*)
    4.47         (open-db db)
    4.48-        (insert-key  db (pop $args) (pop $args)))))
    4.49+        (insert-key  db (pop *args*) (pop *args*)))))
    4.50 
    4.51 (defcmd rdb-get
    4.52-  (if (> 1 $argc)
    4.53+  (if (> 1 *argc*)
    4.54       (rdb-error "missing arg: KEY")
    4.55       (with-db (db *rdb*)
    4.56         (open-db db)
    4.57-        (when-let ((val (get-key db (car $args))))
    4.58+        (when-let ((val (get-key db (car *args*))))
    4.59           (println val)))))
    4.60 
    4.61 (defcmd rdb-destroy
    4.62@@ -59,7 +59,7 @@
    4.63   (with-db (db *rdb*)
    4.64     (open-db db)
    4.65     (let ((val (make-array 32 :element-type 'octet)))
    4.66-      (dotimes (i (if (zerop $argc) 1000 (parse-integer (car $args))))
    4.67+      (dotimes (i (if (zerop *argc*) 1000 (parse-integer (car *args*))))
    4.68         (nreversef val)
    4.69         (let ((seed (random 32)))
    4.70           (dotimes (ii seed)
    4.71@@ -69,7 +69,7 @@
    4.72                    (sb-ext:string-to-octets (string (gensym "foo")))
    4.73                    val)))))
    4.74 
    4.75-(define-cli $cli
    4.76+(define-cli *cli*
    4.77   :name "rdb"
    4.78   :version "0.1.0"
    4.79   :thunk rdb-show
    4.80@@ -92,8 +92,8 @@
    4.81     (with-slots (opts cmds args) *cli*
    4.82       ;; FIXME 2024-05-07: needs to be triggered explicitly - need to support
    4.83       ;; running global opt thunks even when no arg present - macro key
    4.84-      (if (active-cmds $cli)
    4.85-          (prog2 (do-opt (car (find-opts $cli "db")))
    4.86-              (do-cmd $cli)
    4.87+      (if (active-cmds *cli*)
    4.88+          (prog2 (do-opt (car (find-opts *cli* "db")))
    4.89+              (do-cmd *cli*)
    4.90             (close-db *rdb*))
    4.91-          (print-help $cli)))))
    4.92+          (print-help *cli*)))))
     5.1--- a/lisp/bin/skel.lisp	Fri Jul 26 23:12:33 2024 -0400
     5.2+++ b/lisp/bin/skel.lisp	Fri Jul 26 23:55:27 2024 -0400
     5.3@@ -14,25 +14,25 @@
     5.4 (in-package :bin/skel)
     5.5 (in-readtable :shell)
     5.6 
     5.7-(defopt skc-help (print-help $cli) $val)
     5.8-(defopt skc-version (print-version $cli))
     5.9+(defopt skc-help (print-help *cli*) *arg*)
    5.10+(defopt skc-version (print-version *cli*))
    5.11 (defopt skc-level *log-level*
    5.12-  (setq *log-level* (if $val (if (stringp $val)
    5.13-                                 (sb-int:keywordicate (string-upcase $val))
    5.14-                                 $val)
    5.15+  (setq *log-level* (if *arg* (if (stringp *arg*)
    5.16+                                 (sb-int:keywordicate (string-upcase *arg*))
    5.17+                                 *arg*)
    5.18                         :info)))
    5.19 
    5.20 ;; TODO 2023-10-13: almost there
    5.21 ;; (defopt skc-config
    5.22-;;   (init-user-skelrc (when $val (parse-file-opt $val))))
    5.23+;;   (init-user-skelrc (when *arg* (parse-file-opt *arg*))))
    5.24 
    5.25 (defcmd skc-edit
    5.26-  (let ((file (or (when $args (pop $args)) (sk-path *skel-project*))))
    5.27+  (let ((file (or (when *args* (pop *args*)) (sk-path *skel-project*))))
    5.28     (cli/ed:run-emacsclient (namestring file))))
    5.29 
    5.30 (defcmd skc-init
    5.31-  (let ((file (when $args (pop $args)))
    5.32-	(name (when (> $argc 1) (pop $args)))) ;; TODO: test, may need to be
    5.33+  (let ((file (when *args* (pop *args*)))
    5.34+	(name (when (> *argc* 1) (pop *args*)))) ;; TODO: test, may need to be
    5.35     ;; sequential for side-effect
    5.36     ;; of pop
    5.37     (handler-bind
    5.38@@ -47,8 +47,8 @@
    5.39 
    5.40 (defcmd skc-describe
    5.41   (describe
    5.42-   (if (> $argc 0)
    5.43-       (find-skelfile (pathname (car $args)) :load t)
    5.44+   (if (> *argc* 0)
    5.45+       (find-skelfile (pathname (car *args*)) :load t)
    5.46        (or *skel-project* *skel-user-config* *skel-system-config*))))
    5.47 
    5.48 
    5.49@@ -57,14 +57,14 @@
    5.50   (setq *no-exit* t)
    5.51   (inspect
    5.52    (find-skelfile
    5.53-    (if $args (pathname (car $args))
    5.54+    (if *args* (pathname (car *args*))
    5.55 	#P".")
    5.56     :load t)))
    5.57 
    5.58 #+tools
    5.59 (defcmd skc-view
    5.60-  (if $args 
    5.61-      (let ((stuff (loop for a in $args
    5.62+  (if *args* 
    5.63+      (let ((stuff (loop for a in *args*
    5.64                          collect (sk-slot-case a))))
    5.65         (sk-view (if (= 1 (length stuff)) (car stuff) stuff)))
    5.66       (sk-view (if (boundp '*skel-project*) *skel-project*
    5.67@@ -132,8 +132,8 @@
    5.68     (":cache" (sk-cache *skel-user-config*))))
    5.69 
    5.70 (defcmd skc-show
    5.71-  (if $args 
    5.72-      (mapc (lambda (x) (when-let ((ret (sk-slot-case x))) (println ret))) $args)
    5.73+  (if *args* 
    5.74+      (mapc (lambda (x) (when-let ((ret (sk-slot-case x))) (println ret))) *args*)
    5.75       (describe (if (boundp '*skel-project*) *skel-project*
    5.76                     (if (boundp '*skel-user-config*) *skel-user-config*
    5.77                         (if (boundp '*skel-system-config*) *skel-system-config*
    5.78@@ -141,14 +141,14 @@
    5.79 
    5.80 (defcmd skc-push
    5.81   (case (sk-vc-meta-kind (sk-vc (find-skelfile #P"." :load t)))
    5.82-    (:git (run-git-command "push" $args t))
    5.83-    (:hg (run-hg-command "push" $args t))
    5.84+    (:git (run-git-command "push" *args* t))
    5.85+    (:hg (run-hg-command "push" *args* t))
    5.86     (t (skel-simple-error "unknown VC type"))))
    5.87 
    5.88 (defcmd skc-pull
    5.89   (case (sk-vc-meta-kind (sk-vc (find-skelfile #P"." :load t)))
    5.90-    (:git (run-git-command "pull" $args t))
    5.91-    (:hg (run-hg-command "pull" (append '("-u") $args) t))
    5.92+    (:git (run-git-command "pull" *args* t))
    5.93+    (:hg (run-hg-command "pull" (append '("-u") *args*) t))
    5.94     (t (skel-simple-error "unknown VC type"))))
    5.95 
    5.96 (defun hg-status ()
    5.97@@ -171,44 +171,44 @@
    5.98 
    5.99 (defcmd skc-clone
   5.100   (case (sk-vc-meta-kind (sk-vc (find-skelfile #P"." :load t)))
   5.101-    (:git (run-git-command "clone" $args t))
   5.102-    (:hg (run-hg-command "clone" $args t))
   5.103+    (:git (run-git-command "clone" *args* t))
   5.104+    (:hg (run-hg-command "clone" *args* t))
   5.105     (t (skel-simple-error "unknown VC type"))))
   5.106 
   5.107 (defcmd skc-commit
   5.108-  ;; (debug! $optc $argc)
   5.109+  ;; (debug! *optc* *argc*)
   5.110   (case (sk-vc-meta-kind (sk-vc (find-skelfile #P"." :load t)))
   5.111-    (:git (run-git-command "commit" $args t))
   5.112-    (:hg (run-hg-command "commit" $args t))
   5.113+    (:git (run-git-command "commit" *args* t))
   5.114+    (:hg (run-hg-command "commit" *args* t))
   5.115     (t (skel-simple-error "unknown VC type"))))
   5.116 
   5.117 (defcmd skc-make
   5.118   (let ((sk (find-skelfile #P"." :load t)))
   5.119     (sb-ext:enable-debugger)
   5.120-    (print $args)
   5.121+    (print *args*)
   5.122     ;; (setq *no-exit* t)
   5.123-    (if $args
   5.124-        (loop for a in $args
   5.125+    (if *args*
   5.126+        (loop for a in *args*
   5.127               do (debug!
   5.128                   (when-let ((rule (sk-find-rule a sk)))
   5.129                     (sk-make sk rule))))
   5.130         (debug! (sk-make sk (aref (sk-rules sk) 0))))))
   5.131 
   5.132 (defcmd skc-run
   5.133-  (if $args
   5.134+  (if *args*
   5.135       (mapc (lambda (script)
   5.136               (debug!
   5.137                (sk-run
   5.138                 (sk-find-script
   5.139                  (pathname-name script)
   5.140-                 (find-skelfile #P"." :load t))))) $args)
   5.141+                 (find-skelfile #P"." :load t))))) *args*)
   5.142       (required-argument 'name)))
   5.143 
   5.144 (defcmd skc-vc
   5.145-  (if $args
   5.146-      (std/string:string-case ((car $args) :default (skel-simple-error "invalid command"))
   5.147+  (if *args*
   5.148+      (std/string:string-case ((car *args*) :default (skel-simple-error "invalid command"))
   5.149         ("status" (skc-status nil nil)))
   5.150-      (skc-status nil $opts)))
   5.151+      (skc-status nil *opts*)))
   5.152 
   5.153 (defcmd skc-shell
   5.154   (sb-ext:enable-debugger)
   5.155@@ -225,9 +225,9 @@
   5.156       (sb-impl::toplevel-repl nil))))
   5.157 
   5.158 (defcmd skc-new
   5.159-  (trace! $args $opts))
   5.160+  (trace! *args* *opts*))
   5.161   
   5.162-(define-cli $cli
   5.163+(define-cli *cli*
   5.164   :name "skel"
   5.165   :version #.(format nil "0.1.1:~A" (read-line (sb-ext:process-output (vc:run-hg-command "id" '("-i") :stream))))
   5.166   :description "A hacker's project compiler."
   5.167@@ -346,9 +346,9 @@
   5.168   (in-package :sk-user)
   5.169   (let ((*log-level* :info))
   5.170     (in-readtable :shell)
   5.171-    (with-cli (opts cmds) $cli
   5.172+    (with-cli (opts cmds) *cli*
   5.173       (init-skel-vars)
   5.174       (when-let ((project (find-skelfile #P".")))
   5.175         (setq *skel-project* (load-skelfile project)))
   5.176-      (do-cmd $cli)
   5.177-      (debug-opts $cli))))
   5.178+      (do-cmd *cli*)
   5.179+      (debug-opts *cli*))))
     6.1--- a/lisp/lib/cli/clap/macs.lisp	Fri Jul 26 23:12:33 2024 -0400
     6.2+++ b/lisp/lib/cli/clap/macs.lisp	Fri Jul 26 23:55:27 2024 -0400
     6.3@@ -31,17 +31,17 @@
     6.4 
     6.5 ;; TODO fix these macros
     6.6 (defmacro defcmd (name &body body)
     6.7-  `(defun ,name (*args* *opts*) 
     6.8-     (declare (ignorable *args* *opts*))
     6.9-     (let ((*argc* (length *args*))
    6.10-           (*optc* (length *opts*)))
    6.11-       (declare (ignorable *argc* *optc*))
    6.12-       ,@body)))
    6.13+  `(defun ,name (args opts) 
    6.14+     (declare (ignorable args opts))
    6.15+     (setq *argc* (length args)
    6.16+           *optc* (length opts))
    6.17+     ,@body))
    6.18 
    6.19 (defmacro defopt (name &body body)
    6.20-  `(defun ,name (&optional *arg*)
    6.21-     (declare (ignorable *arg*))
    6.22-     ,@body))
    6.23+  `(defun ,name (&optional arg)
    6.24+     (declare (ignorable arg))
    6.25+     (setq *arg* arg)
    6.26+       ,@body))
    6.27 
    6.28 (declaim (inline walk-cli-slots))
    6.29 (defun walk-cli-slots (cli)
     7.1--- a/lisp/lib/cli/clap/pkg.lisp	Fri Jul 26 23:12:33 2024 -0400
     7.2+++ b/lisp/lib/cli/clap/pkg.lisp	Fri Jul 26 23:55:27 2024 -0400
     7.3@@ -7,7 +7,7 @@
     7.4   (:use :cl)
     7.5   (:export :*cli-group-separator* :*no-exit* :*default-cli-def*
     7.6    :*default-cli-class* :*cli-opt-kinds* :*cli* :*opts*
     7.7-   :*args* :*argc* :*arg*))
     7.8+   :*args* :*argc* :*arg* :*optc*))
     7.9 
    7.10 (defpackage :cli/clap/util
    7.11   (:use :cl :std :log :sb-ext :cli/clap/vars)
    7.12@@ -16,11 +16,9 @@
    7.13    :default-thunk))
    7.14 
    7.15 (defpackage :cli/clap/macs
    7.16-  (:use :cl :std :log :sb-ext :cli/clap/util)
    7.17-  (:import-from :cli/clap/vars :*no-exit*)
    7.18+  (:use :cl :std :log :sb-ext :cli/clap/util :cli/clap/vars)
    7.19   (:export :defopt :defcmd :walk-cli-slots
    7.20-   :$val :$args :$argc :$opts
    7.21-   :$optc :make-opt-parser :with-cli-handlers :make-shorty))
    7.22+   :make-opt-parser :with-cli-handlers :make-shorty))
    7.23 
    7.24 (defpackage :cli/clap/proto
    7.25   (:use :cl :std :log :sb-ext)