changelog shortlog graph tags branches files raw help

Mercurial > core / changeset: skel updates, sketch of sk-path parser

changeset 516: f68a5996a2b1
parent 515: c2d33f5bc5cb
child 517: ed9021bf5cef
author: Richard Westhaver <ellis@rwest.io>
date: Sun, 07 Jul 2024 00:49:54 -0400
files: emacs/lib/sk.el lisp/bin/skel.lisp lisp/lib/skel/comp/asd.lisp lisp/lib/skel/comp/cargo.lisp lisp/lib/skel/comp/makefile.lisp lisp/lib/skel/core/pkg.lisp lisp/lib/skel/core/proto.lisp lisp/lib/skel/core/util.lisp skelfile
description: skel updates, sketch of sk-path parser
     1.1--- a/emacs/lib/sk.el	Fri Jul 05 22:30:33 2024 -0400
     1.2+++ b/emacs/lib/sk.el	Sun Jul 07 00:49:54 2024 -0400
     1.3@@ -79,6 +79,8 @@
     1.4   :group 'skel
     1.5   (skel-minor-mode 1))
     1.6 
     1.7+(org-babel-make-language-alias "skel" "lisp")
     1.8+
     1.9 (defun maybe-skel-minor-mode ()
    1.10   "Check the current environment and determine if `skel-minor-mode' should
    1.11 be enabled. This function is added as a hook to
     2.1--- a/lisp/bin/skel.lisp	Fri Jul 05 22:30:33 2024 -0400
     2.2+++ b/lisp/bin/skel.lisp	Sun Jul 07 00:49:54 2024 -0400
     2.3@@ -76,6 +76,7 @@
     2.4 
     2.5 (defcmd skc-compile ()
     2.6   (sk-call *skel-project* :compile))
     2.7+
     2.8 (defcmd skc-build ()
     2.9   (sk-call *skel-project* :build))
    2.10 (defcmd skc-dist ()
     3.1--- a/lisp/lib/skel/comp/asd.lisp	Fri Jul 05 22:30:33 2024 -0400
     3.2+++ b/lisp/lib/skel/comp/asd.lisp	Sun Jul 07 00:49:54 2024 -0400
     3.3@@ -47,7 +47,8 @@
     3.4   (declare (ignore kind))
     3.5   (parse-sk-lisp-system (pathname-name path) path))
     3.6 
     3.7-;; (defmethod sk-compile ((self sk-lisp-system) stream &key &allow-other-keys))
     3.8+(defmethod sk-compile ((self sk-lisp-system) &key force force-not verbose version &allow-other-keys)
     3.9+  (asdf:compile-system self :force force :force-not force-not :verbose verbose :version version))
    3.10 
    3.11 (defun sk-write-asd-components (module)
    3.12   (etypecase module
     4.1--- a/lisp/lib/skel/comp/cargo.lisp	Fri Jul 05 22:30:33 2024 -0400
     4.2+++ b/lisp/lib/skel/comp/cargo.lisp	Sun Jul 07 00:49:54 2024 -0400
     4.3@@ -29,7 +29,7 @@
     4.4   (declare (ignore kind))
     4.5   (parse-sk-rust-system path))
     4.6 
     4.7-(defmethod sk-compile ((self sk-rust-system) stream &key &allow-other-keys))
     4.8+(defmethod sk-compile ((self sk-rust-system) &key &allow-other-keys))
     4.9 
    4.10 (defmethod sk-write-file ((self sk-rust-system) &key path))
    4.11 
     5.1--- a/lisp/lib/skel/comp/makefile.lisp	Fri Jul 05 22:30:33 2024 -0400
     5.2+++ b/lisp/lib/skel/comp/makefile.lisp	Sun Jul 07 00:49:54 2024 -0400
     5.3@@ -61,7 +61,7 @@
     5.4   (destructuring-bind (k v) self
     5.5     (setf (gethash k (mk-vars place)) v)))
     5.6 
     5.7-(defmethod sk-compile ((self makefile) stream &key &allow-other-keys)
     5.8+(defmethod sk-compile ((self makefile) &key stream &allow-other-keys)
     5.9   "Compile the makefile SELF to output STREAM."
    5.10   (with-open-stream (s stream)
    5.11     (with-slots (directives variables explicit implicit) self
     6.1--- a/lisp/lib/skel/core/pkg.lisp	Fri Jul 05 22:30:33 2024 -0400
     6.2+++ b/lisp/lib/skel/core/pkg.lisp	Sun Jul 07 00:49:54 2024 -0400
     6.3@@ -86,10 +86,11 @@
     6.4    :load-skelfile
     6.5    :find-skelfile
     6.6    :find-sk-file
     6.7-   :get-config-slot*
     6.8+   :get-skelrc-slot*
     6.9    :find-project-root
    6.10    :describe-skeleton
    6.11-   :describe-project))
    6.12+   :describe-project
    6.13+   :parse-sk-path))
    6.14 
    6.15 (defpackage :skel/core/vm
    6.16   (:use :cl :std :skel/core/err)
     7.1--- a/lisp/lib/skel/core/proto.lisp	Fri Jul 05 22:30:33 2024 -0400
     7.2+++ b/lisp/lib/skel/core/proto.lisp	Sun Jul 07 00:49:54 2024 -0400
     7.3@@ -21,8 +21,8 @@
     7.4   (:documentation "load or reload object SELF."))
     7.5 (defgeneric sk-load-component (kind form)
     7.6   (:documentation "load a component of type KIND from provided FORM."))
     7.7-(defgeneric sk-compile (self stream &key &allow-other-keys)
     7.8-  (:documentation "compile object SELF to output STREAM"))
     7.9+(defgeneric sk-compile (self &key &allow-other-keys)
    7.10+  (:documentation "compile object SELF."))
    7.11 (defgeneric sk-transform (self other &key &allow-other-keys)
    7.12   (:documentation "transform SELF to object of type OTHER"))
    7.13 (defgeneric sk-convert (self)
     8.1--- a/lisp/lib/skel/core/util.lisp	Fri Jul 05 22:30:33 2024 -0400
     8.2+++ b/lisp/lib/skel/core/util.lisp	Sun Jul 07 00:49:54 2024 -0400
     8.3@@ -116,7 +116,7 @@
     8.4   "Open the current system configuration using ED."
     8.5   (ed *system-skelrc*))
     8.6 
     8.7-(defun get-config-slot* (slot)
     8.8+(defun get-skelrc-slot* (slot)
     8.9   "First check *SKEL-USER-CONFIG* for a slot value, and if a valid value
    8.10 isn't found check *SKEL-SYSTEM-CONFIG*."
    8.11   (let ((slot (find-symbol (string-upcase (string slot)) :skel/core/obj)))
    8.12@@ -140,8 +140,23 @@
    8.13   (load-skelrc)
    8.14   (when-let ((project (find-skelfile *default-pathname-defaults*)))
    8.15     (setq *skel-project* (load-skelfile project)))
    8.16-  (setq *skel-cache* (get-config-slot* :cache)
    8.17-        *skel-store* (get-config-slot* :store)
    8.18-        *skel-stash* (get-config-slot* :stash)
    8.19-        *skel-registry* (get-config-slot* :registry))
    8.20+  (setq *skel-cache* (get-skelrc-slot* :cache)
    8.21+        *skel-store* (get-skelrc-slot* :store)
    8.22+        *skel-stash* (get-skelrc-slot* :stash)
    8.23+        *skel-registry* (get-skelrc-slot* :registry))
    8.24   (values))
    8.25+
    8.26+;;; Paths
    8.27+
    8.28+(defun parse-sk-path (input &optional (start 0) end)
    8.29+  "An 'sk-path' is a CLI argument which can be translated into a corresponding
    8.30+nested object."
    8.31+  (with-input-from-string (s input)
    8.32+    (loop for i from start below end
    8.33+          collect (read-char s))))
    8.34+
    8.35+;; (defmacro sk-apply-path-relevancy (path &optional (context *default-pathname-defaults*)))
    8.36+
    8.37+(defun find-sk-path (path &optional skel)
    8.38+  "Find an sk-path string in a skel object, or attempt to match it against all
    8.39+active objects.")
     9.1--- a/skelfile	Fri Jul 05 22:30:33 2024 -0400
     9.2+++ b/skelfile	Sun Jul 07 00:49:54 2024 -0400
     9.3@@ -21,11 +21,11 @@
     9.4         #$find lisp -name '*.fasl' -type f -delete$#
     9.5         #$echo 'cargo clean:' && cd rust && cargo clean$#)
     9.6  (box () #$podman build . --build-arg IMAGE=box -t core$#)
     9.7- (tree-sitter-alien ()
     9.8-                    #$ cd lisp/ffi/tree-sitter &&
     9.9+ (tree-sitter-alien () #$cd lisp/ffi/tree-sitter &&
    9.10                     clang -g -O2 -Wall -Wno-unused-value -ltree-sitter -shared \
    9.11-                    alien.c -o /usr/local/lib/libtree-sitter-alien.so$#
    9.12-                    (info! "installed /usr/local/lib/libtree-sitter-alien.so"))
    9.13+                    alien.c -o ../../../.stash/libtree-sitter-alien.so$#)
    9.14+ (tree-sitter-alien-install () #$cp .stash/libtree-sitter-alien.so /usr/local/lib/$#)
    9.15+                            
    9.16  (psl.dat () ;; req:fetch works in slime and sk-shell but not here? hmm..
    9.17           (with-open-file
    9.18            (st ".stash/psl.dat" :direction :output :element-type 'octet)
    9.19@@ -77,6 +77,7 @@
    9.20        mkdir -pv core/bin core/share/lisp/fasl
    9.21        mv *.core core/share/lisp/
    9.22        mv *.fasl core/share/lisp/fasl/
    9.23+       mv *.so core/lib/
    9.24        mv $(find -maxdepth 1 -type f ! -name "*.*") core/bin/
    9.25        tar -I 'zstd' -cf core.tar.zst core/*$#)
    9.26  (dist-clean (clean) #$cd .. && tar -I 'zstd' -cf core/core-source.tar.zst core/* && cd core