changeset 312: | 1d46d8e02802 |
parent: | c4682fedd73d |
child: | c5956756f9e5 |
author: | Richard Westhaver <ellis@rwest.io> |
date: | Wed, 08 May 2024 19:44:14 -0400 |
permissions: | -rw-r--r-- |
description: | skel scripts |
206
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
1 | ;;; skel/pkg.lisp --- skeletons |
18 | 2 | |
206
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
3 | ;; Project composition library. |
18 | 4 | |
5 | ;;; Commentary: |
|
6 | ||
206
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
7 | ;; The SKEL system consists of a core package and a compiler package - |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
8 | ;; SKEL/CORE and SKEL/COMP respectively. The core contains all of the |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
9 | ;; low-level bits and a CLOS API for interacting with SKEL |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
10 | ;; objects. The compiler package depends on the core and provides |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
11 | ;; primitive compilers for translating SKEL objects into foreign |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
12 | ;; formats. For example, SK-RULE objects may be translated into a |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
13 | ;; corresponding GNU Make Rule. The compiler packages implement the |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
14 | ;; CLOS API defined in the core and may serve as a useful guide for |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
15 | ;; further extending the system yourself. |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
16 | |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
17 | ;; There are some built-in extensions available in addition to the |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
18 | ;; core and compiler - SKEL/VIZ provides an API for generating |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
19 | ;; visualizations of SKEL objects, and SKEL/DEPLOY introduces CI, |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
20 | ;; Release and packaging features. |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
21 | |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
22 | ;;; TODO: |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
23 | |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
24 | ;; IMPL 2024-02-12: viz |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
25 | |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
26 | ;; IMPL 2024-02-12: deploy |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
27 | |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
28 | ;; IMPL 2024-02-12: ext api |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
29 | |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
30 | ;; |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
31 | |
18 | 32 | ;;; Code: |
93 | 33 | (defpackage :skel/core |
158 | 34 | (:use :cl :cl-ppcre :std :sb-mop :obj/id :sb-bsd-sockets :sb-unix :sxp :log :cli :obj) |
109 | 35 | (:import-from :cli :find-exe) |
91 | 36 | (:import-from :uiop :read-file-forms :ensure-absolute-pathname) |
37 | (:import-from :uiop/pathname :pathname-parent-directory-pathname) |
|
145 | 38 | (:import-from :uiop :with-current-directory) |
91 | 39 | (:import-from :sb-ext :run-program) |
96 | 40 | (:import-from :std :when-let) |
41 | (:import-from :sxp :form) |
|
42 | (:export |
|
91 | 43 | ;; err |
158 | 44 | :skel-error |
91 | 45 | :skel-syntax-error |
46 | :skel-fmt-error |
|
47 | :skel-compile-error |
|
48 | ;; proto |
|
49 | :sk-run :sk-new :sk-save |
|
50 | :sk-tangle :sk-weave |
|
51 | :sk-call :sk-print :sk-load |
|
52 | :sk-compile :sk-transform |
|
53 | :sk-write :sk-writeln |
|
54 | :sk-write-string :sk-write-file |
|
55 | :sk-read-file :sk-install-user-config |
|
284
597f34d43df7
x.lisp upgrades, skel upgrades, worked on shell reader macros
Richard Westhaver <ellis@rwest.io>
parents:
231
diff
changeset
|
56 | :sk-find-rule |
312 | 57 | :sk-find-script |
91 | 58 | ;; header |
59 | :make-file-header |
|
60 | :make-shebang-file-header |
|
61 | :make-source-file-header |
|
62 | :file-header-kind |
|
63 | :make-source-header-comment |
|
64 | :make-shebang-comment |
|
65 | ;; virt |
|
66 | :containerfile |
|
67 | :*default-containerfile* |
|
68 | ;; obj |
|
158 | 69 | :*user-skelrc* :*system-skelrc* |
70 | :*skel-project* :*skel-user-config* :*default-skelrc* :*skel-registry* :*skel-cache* |
|
91 | 71 | :*default-skelfile* :*default-skel-user* :*default-skel-cache* :*default-user-skel-config* |
72 | :*default-user-skelrc* :*default-system-skel-config* :*skelfile-extension* :*skelfile-boundary* |
|
183 | 73 | :*default-skel-stash* |
158 | 74 | :*default-system-skelrc* |
289
c4682fedd73d
added krypt lib, will probably add homer too
Richard Westhaver <ellis@rwest.io>
parents:
287
diff
changeset
|
75 | :load-ast |
183 | 76 | :sk-author :sk-path :sk-stash :sk-cache :sk-registry :sk-user |
103 | 77 | :sk-push :sk-pull |
78 | :edit-skelrc |
|
91 | 79 | :skel :sk-meta :def-sk-class :sk-project :sk-target :sk-source :sk-vc |
80 | :sk-rule :sk-rule-target :sk-rule-source :sk-rule-recipe :make-sk-rule |
|
104
6e5caf0c68a1
obj tree, id, hash, seq, graph.. added cli/progress and init cli/repl
ellis <ellis@rwest.io>
parents:
103
diff
changeset
|
81 | :sk-description :sk-kind :sk-rules :sk-version :sk-name :sk-docs :sk-document |
91 | 82 | :sk-command :sk-scripts :sk-script :sk-config :sk-snippets :sk-snippet :sk-abbrevs :sk-abbrev |
83 | :sk-user-config |
|
158 | 84 | :sk-system-config |
91 | 85 | ;; util |
206
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
86 | :init-skelrc :load-skelrc |
287
609931bd65ba
organ updates, readme.org
Richard Westhaver <ellis@rwest.io>
parents:
284
diff
changeset
|
87 | :init-skel-vars |
206
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
88 | :init-user-skelrc :load-user-skelrc |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
89 | :init-system-skelrc :load-system-skelrc |
91 | 90 | :init-skelfile |
91 | :load-skelfile |
|
92 | :find-skelfile |
|
93 | :find-project-root |
|
94 | :describe-skeleton |
|
95 | :describe-project |
|
96 | ;; vm |
|
97 | :make-stack-slot :make-sk-vm :sks-ref :sks-pop :sks-push)) |
|
98 | ||
99 | (defpackage :skel/comp |
|
96 | 100 | (:use :cl :std :skel/core :sxp) |
91 | 101 | (:export |
102 | ;; asd |
|
103 | :sk-asd |
|
104 | ;; ignore |
|
105 | ;; containerfile |
|
106 | ;; makefile |
|
107 | :*default-makefile* :*makefile-extension* |
|
108 | :*mk-magic-vars* :*mk-command-prefixes* |
|
109 | :mk-val-designator |
|
110 | :mk-val :mk-var |
|
111 | :makefile :push-rule :push-directive :push-var)) |
|
112 | ||
96 | 113 | (uiop:define-package :skel |
114 | (:use :cl :std :skel/core :skel/comp) |
|
93 | 115 | (:use-reexport :skel/core :skel/comp)) |
116 | ||
206
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
117 | ;;; Tools |
93 | 118 | (defpackage :skel/viz |
162 | 119 | (:use :cl :std :skel) |
93 | 120 | (:export)) |
121 | ||
122 | (defpackage :skel/deploy |
|
123 | (:use :cl :std :skel) |
|
124 | (:export)) |
|
206
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
125 | |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
126 | ;;; Extensions |
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
127 | (defpackage :skel/asdf |
231 | 128 | (:use :cl :std :skel) |
206
a0f64fed8f2a
refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents:
183
diff
changeset
|
129 | (:export)) |