1.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2+++ b/core/app/cc-init.org Sat Dec 09 20:50:45 2023 -0500
1.3@@ -0,0 +1,16 @@
1.4+{{{header(cc-init,Richard Westhaver,ellis@rwest.io)}}}
1.5+* help
1.6+#+begin_src shell :results pp replace
1.7+cc-init -h
1.8+#+end_src
1.9+
1.10+#+RESULTS:
1.11+: cc-init 0.1.0-0941fa04c53d+ (x86_64-linux-gnu)
1.12+:
1.13+: Usage: cc-init [OPTIONS]
1.14+:
1.15+: Options:
1.16+: -y Disable confirmation prompts
1.17+: -l, --level... Set the log level
1.18+: -h, --help Print help
1.19+: -V, --version Print version
2.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2+++ b/core/app/homer.org Sat Dec 09 20:50:45 2023 -0500
2.3@@ -0,0 +1,20 @@
2.4+{{{header(homer,Richard Westhaver,ellis@rwest.io)}}}
2.5+* help
2.6+#+begin_src shell :results pp replace
2.7+homer -h
2.8+#+end_src
2.9+
2.10+#+RESULTS:
2.11+#+begin_example
2.12+homer v0.1.0
2.13+ usage: homer [global] <command> [<arg>]
2.14+
2.15+ home manager
2.16+ options:
2.17+ -l/--level* : set the log level
2.18+ -h/--help* : print help
2.19+ -v/--version* : print version
2.20+ commands:
2.21+ show
2.22+
2.23+#+end_example
3.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2+++ b/core/app/krypt.org Sat Dec 09 20:50:45 2023 -0500
3.3@@ -0,0 +1,25 @@
3.4+{{{header(kyrpt,Richard Westhaver,ellis@rwest.io)}}}
3.5+* help
3.6+#+begin_src shell :results pp replace
3.7+krypt -h
3.8+#+end_src
3.9+
3.10+#+RESULTS:
3.11+#+begin_example
3.12+Krypt CLI
3.13+
3.14+Usage: krypt [OPTIONS] [COMMAND]
3.15+
3.16+Commands:
3.17+ check check service providers and config
3.18+ show Show Krypt info
3.19+ search Query the Krypt
3.20+ help Print this message or the help of the given subcommand(s)
3.21+
3.22+Options:
3.23+ -c, --cfg <CFG> Set the default config file [env: KRYPT_CONFIG_FILE=]
3.24+ -u, --user <USER> Set a user for this command [env: USER=ellis]
3.25+ -l, --level... Set log level
3.26+ -h, --help Print help
3.27+ -V, --version Print version
3.28+#+end_example
4.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2+++ b/core/app/mailman.org Sat Dec 09 20:50:45 2023 -0500
4.3@@ -0,0 +1,26 @@
4.4+{{{header(mailman,Richard Westhaver,ellis@rwest.io)}}}
4.5+* help
4.6+#+begin_src shell :results pp replace
4.7+mailman -h
4.8+#+end_src
4.9+
4.10+#+RESULTS:
4.11+#+begin_example
4.12+Mail client util
4.13+
4.14+Usage: mailman [OPTIONS] [COMMAND]
4.15+
4.16+Commands:
4.17+ ping Ping the server
4.18+ search Search for items
4.19+ import Import an account
4.20+ export Export an account
4.21+ help Print this message or the help of the given subcommand(s)
4.22+
4.23+Options:
4.24+ -c, --cfg <CFG> Set the default config file [env: MAILMAN_CONFIG_FILE=]
4.25+ -u, --user <USER> Set a user for this command [env: USER=ellis]
4.26+ -l, --level... Set log level
4.27+ -h, --help Print help
4.28+ -V, --version Print version
4.29+#+end_example
5.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
5.2+++ b/core/app/organ.org Sat Dec 09 20:50:45 2023 -0500
5.3@@ -0,0 +1,30 @@
5.4+{{{header(organ,Richard Westhaver,ellis@rwest.io)}}}
5.5+
5.6+The =organ= CLI tool is used to manipulate [[https://orgmode.org/][Org Mode]] files.
5.7+
5.8+* help
5.9+#+begin_src shell :results pp replace
5.10+organ -h
5.11+#+end_src
5.12+
5.13+#+RESULTS:
5.14+#+begin_example
5.15+organ v0.0.1
5.16+ usage: organ [global] <command> [<arg>]
5.17+
5.18+ org-mode toolbox
5.19+ options:
5.20+ -l/--level* : set the log level
5.21+ -h/--help* : print help
5.22+ -v/--version* : print version
5.23+ commands:
5.24+ inspect : inspect an org file
5.25+ -i/--input : path to org file
5.26+
5.27+ show : display local org info
5.28+
5.29+ parse
5.30+ -i/--input : input source
5.31+ -o/--output : compiler output
5.32+
5.33+#+end_example
6.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
6.2+++ b/core/app/packy.org Sat Dec 09 20:50:45 2023 -0500
6.3@@ -0,0 +1,10 @@
6.4+{{{header(packy,Richard Westhaver,ellis@rwest.io)}}}
6.5+
6.6+Packy is a universal package manager. The packy CLI tool is used to
6.7+query and download resources from local or remote stores.
6.8+* help
6.9+#+begin_src shell :results pp replace
6.10+packy -h
6.11+#+end_src
6.12+
6.13+#+RESULTS:
7.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
7.2+++ b/core/app/rdb.org Sat Dec 09 20:50:45 2023 -0500
7.3@@ -0,0 +1,19 @@
7.4+{{{header(rdb,Richard Westhaver,ellis@rwest.io)}}}
7.5+
7.6+The =rdb= cli tool is a simple RocksDB management utility.
7.7+
7.8+* help
7.9+#+begin_src shell :results pp replace
7.10+rdb -h
7.11+#+end_src
7.12+
7.13+#+RESULTS:
7.14+: rdb v0.1.0
7.15+: usage: rdb [global] <command> [<arg>]
7.16+:
7.17+: richard's database
7.18+: options:
7.19+: -l/--level* : set the log level
7.20+: -h/--help* : print help
7.21+: -v/--version* : print version
7.22+: commands:
8.1--- a/core/app/readme.org Wed Dec 06 23:27:11 2023 -0500
8.2+++ b/core/app/readme.org Sat Dec 09 20:50:45 2023 -0500
8.3@@ -1,3 +1,12 @@
8.4 {{{header(Core App Docs,Richard Westhaver,ellis@rwest.io)}}}
8.5 #+OPTIONS: ^:nil toc:nil num:nil html-postamble:nil
8.6 #+EXPORT_FILE_NAME: index
8.7+* [[file:skel.org][skel]] :lisp:
8.8+* [[file:organ.org][organ]] :lisp:
8.9+* [[file:packy.org][packy]] :lisp:
8.10+* [[file:homer.org][homer]] :lisp:
8.11+* [[file:rdb.org][rdb]] :lisp:
8.12+* [[file:tz.org][tz]] :rust:
8.13+* [[file:mailman.org][mailman]] :rust:
8.14+* [[file:cc-init.org][cc-init]] :rust:
8.15+* [[file:krypt.org][krypt]] :rust:
9.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
9.2+++ b/core/app/skel.org Sat Dec 09 20:50:45 2023 -0500
9.3@@ -0,0 +1,166 @@
9.4+{{{header(skel,Richard Westhaver,ellis@rwest.io)}}}
9.5+
9.6+The =skel= CLI is the primary build tool for contributors and serves a
9.7+similar role to language-agnostic build tools like [[https://www.gnu.org/software/make/][GNU Make]], but with
9.8+the features and ease-of-use of language-specific build tools like
9.9+Rust's [[https://github.com/rust-lang/cargo][Cargo]].
9.10+
9.11+* features
9.12+** configuration
9.13+The ~skel~ tool can be configured at runtime using the CLI flags, or
9.14+via local configuration files. The configuration files are in the
9.15+~skelfile~ format and are assigned the following locations by default:
9.16+- ~*default-user-skelrc*~ :: =$HOME/.skelrc=
9.17+- ~*default-system-skelrc*~ :: =/etc/skel/skelrc=
9.18+
9.19+Both files are optional and the user skelrc takes precedence over
9.20+system.
9.21+
9.22+Example =~/.skelrc=:
9.23+#+begin_src skel :results pp replace :exports both
9.24+ ;;; .skelrc @ 2023-10-12.02:58:08 -*- mode: skel; -*-
9.25+ :author "Richard Westhaver <ellis@rwest.io>"
9.26+ :user "ellis"
9.27+ :version "0.1.0"
9.28+ :tags ("auto")
9.29+ :fmt :collapsed
9.30+ :vc :hg
9.31+ :auto-insert t
9.32+ :license "MPL"
9.33+ :log-level nil
9.34+ :shed "~/lab/shed"
9.35+ :stash "~/lab/stash"
9.36+ :scripts "~/bin/sh"
9.37+ :alias-list
9.38+ (("p" "vc push")
9.39+ ("P" "vc pull")
9.40+ ("ci" "vc commit"))
9.41+#+end_src
9.42+
9.43+** projects
9.44+Projects are the main top-level object users interact with. A project
9.45+consists of a list of slots which are populated automatically or by
9.46+the user. Once a project is initialized the slots can be accessed and
9.47+a set of high-level operations can be performed.
9.48+
9.49+The easiest way to initialize a project is with a ~skelfile~. These
9.50+files are parsed as a simplified Lisp dialect and generate
9.51+~sk-project~ objects based on their contents.
9.52+
9.53+The simplest project looks like this:
9.54+
9.55+#+begin_src skel :results pp replace :exports both
9.56+:name hello-world
9.57+#+end_src
9.58+
9.59+Don't worry, this is still lisp - the parentheses are implied. All we
9.60+actually need is a name to generate an object, and we can fill in the
9.61+blanks later as the project develops.
9.62+
9.63+Here is a more verbose example, still with only metadata:
9.64+
9.65+#+begin_src skel :results pp replace :exports both
9.66+;;; skelfile --- core skelfile -*- mode: skel; -*-
9.67+:name "core"
9.68+:author "Richard Westhaver <ellis@rwest.io>"
9.69+:version "0.1.0"
9.70+:license "MPL"
9.71+:description "The Compiler Company Core"
9.72+:vc :hg
9.73+:tags ("core")
9.74+:docs ((:org "readme") (:org "install") (:org "tests") (:org "todo"))
9.75+:imports ("lisp/lisp.sk" "rust/rust.sk")
9.76+#+end_src
9.77+
9.78+** version control
9.79+=skel= integrates closely with our Version Control System (VCS) which
9.80+is built on [[https://www.mercurial-scm.org/][Mercurial]], but we also interact with and host many [[https://git-scm.com/][Git]]
9.81+repositories.
9.82+
9.83+The =skel= tool helps us abstract away the differences between git/hg
9.84+and make maximum use of their utility. When you run a =skel vc=
9.85+command the currently active ~sk-project~ and configuration are used
9.86+to determine the appropriate VC backend to call. New backends can of
9.87+course be added as extensions.
9.88+
9.89+** TODO compilers
9.90+- State "TODO" from [2023-12-09 Sat 19:28]
9.91+One of the most unusual features of =skel= is the compiler set. With
9.92+the =skel= CLI you can compile the following types of files for your
9.93+project directly from a ~skelfile~:
9.94+- Makefile (.mk)
9.95+- Lisp system defs (.asd)
9.96+- Cargo.toml
9.97+- Containerfile
9.98+- .hgignore/.gitignore
9.99+
9.100+We treat skelfiles as the mother of all build formats and consolidate
9.101+different formats into our own project DSL. This helps reduce
9.102+complexity while increasing capability and portability.
9.103+
9.104+Project compilation occurs on demand with the =sk compile= command.
9.105+
9.106+** TODO virtualization
9.107+- State "TODO" from [2023-12-09 Sat 18:55]
9.108+
9.109+ =skel= offers a mechanism for generating and running Virtual
9.110+ Machines (VMs) and Containers. Under the hood we depend on [[https://podman.io/][podman]]
9.111+ for our container runtime as well as [[https://www.qemu.org/][QEMU]] for some
9.112+ functionality.
9.113+
9.114+** TODO emacs integration
9.115+- State "TODO" from [2023-12-09 Sat 19:30]
9.116+=sk.el= is the Emacs support package for skel. It contains a
9.117+=skel-mode= for working with skelfiles and will soon contain
9.118+additional built-in integrations for =project.el=, =vc.el=, and more.
9.119+** TODO deployment
9.120+- State "TODO" from [2023-12-09 Sat 19:37]
9.121+** TODO visualization
9.122+- State "TODO" from [2023-12-09 Sat 19:37]
9.123+* help
9.124+#+begin_src shell :results pp replace :exports both
9.125+skel -h
9.126+#+end_src
9.127+
9.128+#+RESULTS:
9.129+#+begin_example
9.130+skel v0.1.1
9.131+ usage: skel [global] <command> [<arg>]
9.132+
9.133+ A hacker's project compiler and build tool.
9.134+ options:
9.135+ -h/--help* : print this message
9.136+ -v/--version* : print version
9.137+ -d/--debug* : set log level (debug,info,trace,warn)
9.138+ -c/--config* : set a custom skel user config
9.139+ -i/--input : input source
9.140+ -o/--output : output target
9.141+ commands:
9.142+ init : initialize a skelfile in the current directory
9.143+ -n/--name : project name
9.144+
9.145+ show : describe the project skelfile
9.146+ -f/--file : path to skelfile
9.147+
9.148+ inspect : inspect the project skelfile
9.149+ -f/--file : path to skelfile
9.150+
9.151+ make : build project targets
9.152+ -t/--target : target to build
9.153+
9.154+ run : run a script or command
9.155+
9.156+ push : push the current project upstream
9.157+
9.158+ pull : pull the current project from remote
9.159+
9.160+ clone : clone a remote project
9.161+
9.162+ commit : commit changes to the project vc
9.163+
9.164+ edit : edit a project file
9.165+
9.166+ shell : open the sk-shell interpreter
9.167+
9.168+#+end_example
9.169+
10.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
10.2+++ b/core/app/tz.org Sat Dec 09 20:50:45 2023 -0500
10.3@@ -0,0 +1,12 @@
10.4+{{{header(tz,Richard Westhaver,ellis@rwest.io)}}}
10.5+
10.6+=tz= is a small binary for packing and unpacking compressed archives
10.7+(tar+zstd).
10.8+
10.9+* help
10.10+#+begin_src shell :results pp replace
10.11+tz -h
10.12+#+end_src
10.13+
10.14+#+RESULTS:
10.15+: mtz [pack|unpack|unpackr] PATH
11.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
11.2+++ b/core/lib/alch.org Sat Dec 09 20:50:45 2023 -0500
11.3@@ -0,0 +1,1 @@
11.4+{{{header(alch,Richard Westhaver,ellis@rwest.io)}}}
12.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
12.2+++ b/core/lib/audio.org Sat Dec 09 20:50:45 2023 -0500
12.3@@ -0,0 +1,1 @@
12.4+{{{header(audio,Richard Westhaver,ellis@rwest.io)}}}
13.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
13.2+++ b/core/lib/crypto.org Sat Dec 09 20:50:45 2023 -0500
13.3@@ -0,0 +1,1 @@
13.4+{{{header(crypto,Richard Westhaver,ellis@rwest.io)}}}
14.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
14.2+++ b/core/lib/db.org Sat Dec 09 20:50:45 2023 -0500
14.3@@ -0,0 +1,1 @@
14.4+{{{header(db,Richard Westhaver,ellis@rwest.io)}}}
15.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
15.2+++ b/core/lib/dl.org Sat Dec 09 20:50:45 2023 -0500
15.3@@ -0,0 +1,1 @@
15.4+{{{header(dl,Richard Westhaver,ellis@rwest.io)}}}
16.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
16.2+++ b/core/lib/dot.org Sat Dec 09 20:50:45 2023 -0500
16.3@@ -0,0 +1,1 @@
16.4+{{{header(dot,Richard Westhaver,ellis@rwest.io)}}}
17.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
17.2+++ b/core/lib/flate.org Sat Dec 09 20:50:45 2023 -0500
17.3@@ -0,0 +1,1 @@
17.4+{{{header(flate,Richard Westhaver,ellis@rwest.io)}}}
18.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
18.2+++ b/core/lib/hash.org Sat Dec 09 20:50:45 2023 -0500
18.3@@ -0,0 +1,1 @@
18.4+{{{header(hash,Richard Westhaver,ellis@rwest.io)}}}
19.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
19.2+++ b/core/lib/krypt.org Sat Dec 09 20:50:45 2023 -0500
19.3@@ -0,0 +1,1 @@
19.4+{{{header(krypt,Richard Westhaver,ellis@rwest.io)}}}
20.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
20.2+++ b/core/lib/logger.org Sat Dec 09 20:50:45 2023 -0500
20.3@@ -0,0 +1,1 @@
20.4+{{{header(logger,Richard Westhaver,ellis@rwest.io)}}}
21.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
21.2+++ b/core/lib/net.org Sat Dec 09 20:50:45 2023 -0500
21.3@@ -0,0 +1,1 @@
21.4+{{{header(net,Richard Westhaver,ellis@rwest.io)}}}
22.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
22.2+++ b/core/lib/nlp.org Sat Dec 09 20:50:45 2023 -0500
22.3@@ -0,0 +1,1 @@
22.4+{{{header(nlp,Richard Westhaver,ellis@rwest.io)}}}
23.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
23.2+++ b/core/lib/obj.org Sat Dec 09 20:50:45 2023 -0500
23.3@@ -0,0 +1,1 @@
23.4+{{{header(obj,Richard Westhaver,ellis@rwest.io)}}}
24.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
24.2+++ b/core/lib/organ.org Sat Dec 09 20:50:45 2023 -0500
24.3@@ -0,0 +1,1 @@
24.4+{{{header(organ,Richard Westhaver,ellis@rwest.io)}}}
25.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
25.2+++ b/core/lib/packy.org Sat Dec 09 20:50:45 2023 -0500
25.3@@ -0,0 +1,1 @@
25.4+{{{header(packy,Richard Westhaver,ellis@rwest.io)}}}
26.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
26.2+++ b/core/lib/rdb.org Sat Dec 09 20:50:45 2023 -0500
26.3@@ -0,0 +1,1 @@
26.4+{{{header(rdb,Richard Westhaver,ellis@rwest.io)}}}
27.1--- a/core/lib/readme.org Wed Dec 06 23:27:11 2023 -0500
27.2+++ b/core/lib/readme.org Sat Dec 09 20:50:45 2023 -0500
27.3@@ -1,3 +1,25 @@
27.4 {{{header(Core Lib Docs,Richard Westhaver,ellis@rwest.io)}}}
27.5 #+OPTIONS: ^:nil toc:nil num:nil html-postamble:nil
27.6 #+EXPORT_FILE_NAME: index
27.7+
27.8+* [[file:skel.org][skel]] :lisp:
27.9+
27.10+* [[file:organ.org][organ]] :lisp:
27.11+* [[file:packy.org][packy]] :lisp:
27.12+* [[file:rdb.org][rdb]] :lisp:
27.13+* [[file:nlp.org][nlp]] :lisp:
27.14+* [[file:dot.org][dot]] :lisp:
27.15+* [[file:alch.org][alch]] :rust:
27.16+* [[file:audio.org][audio]] :rust:
27.17+* [[file:crypto.org][crypto]] :rust:
27.18+* [[file:logger.org][logger]] :rust:
27.19+* [[file:krypt.org][krypt]] :rust:
27.20+* [[file:sxp.org][sxp]] :rust:
27.21+* [[file:tenex.org][tenex]] :rust:
27.22+* [[file:util.org][util]] :rust:
27.23+* [[file:obj.org][obj]] :rust:
27.24+* [[file:net.org][net]] :rust:
27.25+* [[file:flate.org][flate]] :rust:
27.26+* [[file:db.org][db]] :rust:
27.27+* [[file:dl.org][dl]] :rust:
27.28+* [[file:hash.org][hash]] :rust:
28.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
28.2+++ b/core/lib/skel.org Sat Dec 09 20:50:45 2023 -0500
28.3@@ -0,0 +1,51 @@
28.4+{{{header(skel,Richard Westhaver,ellis@rwest.io)}}}
28.5+
28.6+=skel= is /a hacker's project compiler and build tool/. It is an
28.7+extensible software library designed for managing /projects/.
28.8+
28.9+The [[https://compiler.company/docs/core/app/skel.html][cli]] is the main entry point for typical users. This documentation
28.10+is for library developers and internal use.
28.11+
28.12+* Overview
28.13+This library started as a Rust crate but was re-written in Lisp as the
28.14+purpose of the library grew from managing a small collection of
28.15+user-space libraries (also written in Rust) to managing large
28.16+collections in many different langs.
28.17+
28.18+It is obvious in hindsight, that this project needs Lisp. Today we are
28.19+built on CLOS with classes and methods exposing the library API.
28.20+
28.21+* Design
28.22+The library core is built on CLOS. Most important data structures are
28.23+represented with classes, slots, and methods such as the ~sk-project~
28.24+class which has a slot named ~:components~ and a method specialized on
28.25+it called ~load-ast~.
28.26+
28.27+We make use of mixins defined within the library like ~sk-meta~ as
28.28+well as classes defined downstream - the ~sxp~ class for example
28.29+provides a default method for AST functions (~load-ast~ ~build-ast~)
28.30+and is defined in the ~std/sxp~ package.
28.31+
28.32+On top of the core we build our compilers or 'translators' which
28.33+convert core objects to a corresponding external representation. For
28.34+example the ~makefile~ and ~mk-*~ classes defined in ~skel/comp/make~
28.35+can be built from a ~sk-project~ and ~sk-*~ instances. Once built, the
28.36+~sk-compile~ method can be used to actually generate the GNU Make
28.37+output as a stream of bytes.
28.38+
28.39+The remainder of the ~skel~ system is dedicated to extensions. These
28.40+are all optional. There are built-in extension called ~tools~ which
28.41+run within the ~skel~ system and external extensions (~ext~) which
28.42+integrate with a particular external system.
28.43+
28.44+The ~tools~ we provide are similar to Cargo's [[https://doc.rust-lang.org/book/ch14-05-extending-cargo.html][custom commands]], but
28.45+they don't need to be a separate binary - they can be compiled into
28.46+the core image. The downside is that this requires re-compiling ~skel~
28.47+every time you want to add a new tool. However since this is Lisp not
28.48+Rust, we can compile anywhere - including from within ~skel~
28.49+itself.
28.50+
28.51+~ext~ contains extensions for external systems. These modules are the
28.52+'edges' of the system and provide support to programs which need to be
28.53+able to access ~skel~ data at runtime. These modules always compiled
28.54+separately and aren't built into the default core image.
29.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
29.2+++ b/core/lib/sxp.org Sat Dec 09 20:50:45 2023 -0500
29.3@@ -0,0 +1,1 @@
29.4+{{{header(sxp,Richard Westhaver,ellis@rwest.io)}}}
30.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
30.2+++ b/core/lib/tenex.org Sat Dec 09 20:50:45 2023 -0500
30.3@@ -0,0 +1,1 @@
30.4+{{{header(tenex,Richard Westhaver,ellis@rwest.io)}}}
31.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
31.2+++ b/core/lib/util.org Sat Dec 09 20:50:45 2023 -0500
31.3@@ -0,0 +1,1 @@
31.4+{{{header(util,Richard Westhaver,ellis@rwest.io)}}}