1.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2+++ b/core/api.org Sun Jun 02 00:42:41 2024 -0400
1.3@@ -0,0 +1,16 @@
1.4+#+title: Core API
1.5+#+author: Richard Westhaver
1.6+#+options: ^:nil toc:nil num:nil html-postamble:nil
1.7+#+export_file_name: index
1.8+
1.9+This documentation is automatically generated based on the default
1.10+branch of the [[https://vc.compiler.company/comp/core][core]].
1.11+
1.12+#+begin_src lisp :results silent
1.13+(ql:quickload :user)
1.14+#+end_src
1.15+
1.16+#+begin_src lisp :results output replace
1.17+#+end_src
1.18+
1.19+#+RESULTS:
2.1--- a/core/api/readme.org Mon May 27 22:04:39 2024 -0400
2.2+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2.3@@ -1,41 +0,0 @@
2.4-{{{header(Core API Docs,Richard Westhaver,ellis@rwest.io)}}}
2.5-#+OPTIONS: ^:nil toc:nil num:nil html-postamble:nil
2.6-#+EXPORT_FILE_NAME: index
2.7-
2.8-=TODO=
2.9-
2.10-This documentation is automatically generated based on the default
2.11-branch of the [[https://vc.compiler.company/comp/core][core]].
2.12-
2.13-#+begin_src lisp :results silent
2.14-(ql:quickload :dot)
2.15-#+end_src
2.16-
2.17-#+begin_src lisp :results output replace
2.18- (defmethod dot:graph-object-node ((graph (eql 'core-api)) (obj cons))
2.19- (make-instance 'dot:node
2.20- :attributes '(:shape :box)))
2.21-
2.22- (defmethod dot:graph-object-points-to ((graph (eql 'core-api)) (obj cons))
2.23- (list (car obj)
2.24- (make-instance 'dot:attributed
2.25- :object (cdr obj)
2.26- :attributes '(:weight 3))))
2.27-
2.28- (defmethod graph-object-node ((graph (eql 'core-api)) (obj symbol))
2.29- (make-instance 'dot:node
2.30- :attributes `(:label ,obj
2.31- :shape :hexagon)))
2.32-
2.33-
2.34- (dot:print-graph
2.35- (dot:generate-graph-from-roots 'core-api (list)
2.36- '(:rankdir "LR" :layout "twopi" :labelloc "t")))
2.37-#+end_src
2.38-
2.39-#+RESULTS:
2.40-: digraph {
2.41-: rankdir=LR;
2.42-: layout="twopi";
2.43-: labelloc="t";
2.44-: }
3.1--- a/core/app/cc-init.org Mon May 27 22:04:39 2024 -0400
3.2+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
3.3@@ -1,16 +0,0 @@
3.4-{{{header(cc-init,Richard Westhaver,ellis@rwest.io)}}}
3.5-* help
3.6-#+begin_src shell :results pp replace
3.7-cc-init -h
3.8-#+end_src
3.9-
3.10-#+RESULTS:
3.11-: cc-init 0.1.0-0941fa04c53d+ (x86_64-linux-gnu)
3.12-:
3.13-: Usage: cc-init [OPTIONS]
3.14-:
3.15-: Options:
3.16-: -y Disable confirmation prompts
3.17-: -l, --level... Set the log level
3.18-: -h, --help Print help
3.19-: -V, --version Print version
4.1--- a/core/app/diz.org Mon May 27 22:04:39 2024 -0400
4.2+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
4.3@@ -1,8 +0,0 @@
4.4-{{{header(diz,Richard Westhaver,ellis@rwest.io)}}}
4.5-
4.6-The ~diz~ disassembly tool.
4.7-
4.8-* help
4.9-#+begin_src shell
4.10-diz -h
4.11-#+end_src
5.1--- a/core/app/homer.org Mon May 27 22:04:39 2024 -0400
5.2+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
5.3@@ -1,20 +0,0 @@
5.4-{{{header(homer,Richard Westhaver,ellis@rwest.io)}}}
5.5-* help
5.6-#+begin_src shell :results pp replace
5.7-homer -h
5.8-#+end_src
5.9-
5.10-#+RESULTS:
5.11-#+begin_example
5.12-homer v0.1.0
5.13- usage: homer [global] <command> [<arg>]
5.14-
5.15- home manager
5.16- options:
5.17- -l/--level* : set the log level
5.18- -h/--help* : print help
5.19- -v/--version* : print version
5.20- commands:
5.21- show
5.22-
5.23-#+end_example
6.1--- a/core/app/krypt.org Mon May 27 22:04:39 2024 -0400
6.2+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
6.3@@ -1,25 +0,0 @@
6.4-{{{header(kyrpt,Richard Westhaver,ellis@rwest.io)}}}
6.5-* help
6.6-#+begin_src shell :results pp replace
6.7-krypt -h
6.8-#+end_src
6.9-
6.10-#+RESULTS:
6.11-#+begin_example
6.12-Krypt CLI
6.13-
6.14-Usage: krypt [OPTIONS] [COMMAND]
6.15-
6.16-Commands:
6.17- check check service providers and config
6.18- show Show Krypt info
6.19- search Query the Krypt
6.20- help Print this message or the help of the given subcommand(s)
6.21-
6.22-Options:
6.23- -c, --cfg <CFG> Set the default config file [env: KRYPT_CONFIG_FILE=]
6.24- -u, --user <USER> Set a user for this command [env: USER=ellis]
6.25- -l, --level... Set log level
6.26- -h, --help Print help
6.27- -V, --version Print version
6.28-#+end_example
7.1--- a/core/app/mailman.org Mon May 27 22:04:39 2024 -0400
7.2+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
7.3@@ -1,26 +0,0 @@
7.4-{{{header(mailman,Richard Westhaver,ellis@rwest.io)}}}
7.5-* help
7.6-#+begin_src shell :results pp replace
7.7-mailman -h
7.8-#+end_src
7.9-
7.10-#+RESULTS:
7.11-#+begin_example
7.12-Mail client util
7.13-
7.14-Usage: mailman [OPTIONS] [COMMAND]
7.15-
7.16-Commands:
7.17- ping Ping the server
7.18- search Search for items
7.19- import Import an account
7.20- export Export an account
7.21- help Print this message or the help of the given subcommand(s)
7.22-
7.23-Options:
7.24- -c, --cfg <CFG> Set the default config file [env: MAILMAN_CONFIG_FILE=]
7.25- -u, --user <USER> Set a user for this command [env: USER=ellis]
7.26- -l, --level... Set log level
7.27- -h, --help Print help
7.28- -V, --version Print version
7.29-#+end_example
8.1--- a/core/app/organ.org Mon May 27 22:04:39 2024 -0400
8.2+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
8.3@@ -1,46 +0,0 @@
8.4-{{{header(organ,Richard Westhaver,ellis@rwest.io)}}}
8.5-
8.6-The =organ= CLI tool is used to manipulate [[https://orgmode.org/][Org Mode]] files.
8.7-
8.8-* Overview
8.9-=Org-mode= the application depends on Emacs (it's written in Emacs
8.10-Lisp) but that doesn't mean we need to. To solve the issue of
8.11-interoperability between different systems, we are developing a tool
8.12-called [[https://lab.rwest.io/comp/core/-/tree/branch/default/lisp/lib/organ][organ]]. The purpose of =organ= is to provide an external API for
8.13-Org documents that doesn't depend on GNU Emacs.
8.14-
8.15-If we were designing a /personal/ note-taking system, I would argue
8.16-that we don't need this tool. The problem is it's /not/ personal - we
8.17-have a much wider intended audience and need to present information in
8.18-many different ways. This means thinking about hundreds to thousands
8.19-of documents instead of tens, about processing those documents into a
8.20-full-text search database, and reducing cost along the way.
8.21-
8.22-Emacs can do all of these things, but do you really want it to?
8.23-
8.24-* help
8.25-#+begin_src shell :results pp replace
8.26-organ -h
8.27-#+end_src
8.28-
8.29-#+RESULTS:
8.30-#+begin_example
8.31-organ v0.0.1
8.32- usage: organ [global] <command> [<arg>]
8.33-
8.34- org-mode toolbox
8.35- options:
8.36- -l/--level* : set the log level
8.37- -h/--help* : print help
8.38- -v/--version* : print version
8.39- commands:
8.40- inspect : inspect an org file
8.41- -i/--input : path to org file
8.42-
8.43- show : display local org info
8.44-
8.45- parse
8.46- -i/--input : input source
8.47- -o/--output : compiler output
8.48-
8.49-#+end_example
9.1--- a/core/app/packy.org Mon May 27 22:04:39 2024 -0400
9.2+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
9.3@@ -1,10 +0,0 @@
9.4-{{{header(packy,Richard Westhaver,ellis@rwest.io)}}}
9.5-
9.6-Packy is a universal package manager. The packy CLI tool is used to
9.7-query and download resources from local or remote stores.
9.8-* help
9.9-#+begin_src shell :results pp replace
9.10-packy -h
9.11-#+end_src
9.12-
9.13-#+RESULTS:
10.1--- a/core/app/rdb.org Mon May 27 22:04:39 2024 -0400
10.2+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
10.3@@ -1,19 +0,0 @@
10.4-{{{header(rdb,Richard Westhaver,ellis@rwest.io)}}}
10.5-
10.6-The =rdb= cli tool is a simple RocksDB management utility.
10.7-
10.8-* help
10.9-#+begin_src shell :results pp replace
10.10-rdb -h
10.11-#+end_src
10.12-
10.13-#+RESULTS:
10.14-: rdb v0.1.0
10.15-: usage: rdb [global] <command> [<arg>]
10.16-:
10.17-: richard's database
10.18-: options:
10.19-: -l/--level* : set the log level
10.20-: -h/--help* : print help
10.21-: -v/--version* : print version
10.22-: commands:
11.1--- a/core/app/readme.org Mon May 27 22:04:39 2024 -0400
11.2+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
11.3@@ -1,13 +0,0 @@
11.4-{{{header(Core App Docs,Richard Westhaver,ellis@rwest.io)}}}
11.5-#+OPTIONS: ^:nil toc:nil num:nil html-postamble:nil
11.6-#+EXPORT_FILE_NAME: index
11.7-* [[file:skel.org][skel]] :lisp:
11.8-* [[file:organ.org][organ]] :lisp:
11.9-* [[file:packy.org][packy]] :lisp:
11.10-* [[file:homer.org][homer]] :lisp:
11.11-* [[file:rdb.org][rdb]] :lisp:
11.12-* [[file:diz.org][diz]] :lisp:
11.13-* [[file:tz.org][tz]] :rust:
11.14-* [[file:mailman.org][mailman]] :rust:
11.15-* [[file:cc-init.org][cc-init]] :rust:
11.16-* [[file:krypt.org][krypt]] :rust:
12.1--- a/core/app/skel.org Mon May 27 22:04:39 2024 -0400
12.2+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
12.3@@ -1,187 +0,0 @@
12.4-{{{header(skel,Richard Westhaver,ellis@rwest.io)}}}
12.5-
12.6-The =skel= CLI is the primary build tool for contributors and serves a
12.7-similar role to language-agnostic build tools like [[https://www.gnu.org/software/make/][GNU Make]], but with
12.8-the features and ease-of-use of language-specific build tools like
12.9-Rust's [[https://github.com/rust-lang/cargo][Cargo]].
12.10-
12.11-* features
12.12-** configuration
12.13-The ~skel~ tool can be configured at runtime using the CLI flags, or
12.14-via local configuration files. The configuration files are in the
12.15-~skelfile~ format and are assigned the following locations by default:
12.16-- ~*default-user-skelrc*~ :: =$HOME/.skelrc=
12.17-- ~*default-system-skelrc*~ :: =/etc/skel/skelrc=
12.18-
12.19-Both files are optional and the user skelrc takes precedence over
12.20-system.
12.21-
12.22-Example =~/.skelrc=:
12.23-#+begin_src skel :results pp replace :exports both
12.24- ;;; .skelrc @ 2023-10-12.02:58:08 -*- mode: skel; -*-
12.25- :author "Richard Westhaver <ellis@rwest.io>"
12.26- :user "ellis"
12.27- :version "0.1.0"
12.28- :tags ("auto")
12.29- :fmt :collapsed
12.30- :vc :hg
12.31- :auto-insert t
12.32- :license "MPL"
12.33- :log-level nil
12.34- :shed "~/lab/shed"
12.35- :stash "~/lab/stash"
12.36- :scripts "~/bin/sh"
12.37- :alias-list
12.38- (("p" "vc push")
12.39- ("P" "vc pull")
12.40- ("ci" "vc commit"))
12.41-#+end_src
12.42-
12.43-** projects
12.44-Projects are the main top-level object users interact with. A project
12.45-consists of a list of slots which are populated automatically or by
12.46-the user. Once a project is initialized the slots can be accessed and
12.47-a set of high-level operations can be performed.
12.48-
12.49-The easiest way to initialize a project is with a ~skelfile~. These
12.50-files are parsed as a simplified Lisp dialect and generate
12.51-~sk-project~ objects based on their contents.
12.52-
12.53-The simplest project looks like this:
12.54-
12.55-#+begin_src skel :results pp replace :exports both
12.56-:name hello-world
12.57-#+end_src
12.58-
12.59-Don't worry, this is still lisp - the parentheses are implied. All we
12.60-actually need is a name to generate an object, and we can fill in the
12.61-blanks later as the project develops.
12.62-
12.63-Here is a more verbose example, still with only metadata:
12.64-
12.65-#+begin_src skel :results pp replace :exports both
12.66-;;; skelfile --- core skelfile -*- mode: skel; -*-
12.67-:name "core"
12.68-:author "Richard Westhaver <ellis@rwest.io>"
12.69-:version "0.1.0"
12.70-:license "MPL"
12.71-:description "The Compiler Company Core"
12.72-:vc :hg
12.73-:tags ("core")
12.74-:docs ((:org "readme") (:org "install") (:org "tests") (:org "todo"))
12.75-:imports ("lisp/lisp.sk" "rust/rust.sk")
12.76-#+end_src
12.77-
12.78-Another example with rules and components:
12.79-
12.80-#+begin_src skel
12.81-;;; skelfile @ 2023-10-08.02:37:25 -*- mode: skel; -*-
12.82-:name skel
12.83-:author "ellis"
12.84-:version "0.1.0"
12.85-:description "a hacker's project compiler"
12.86-:license "MPL"
12.87-:vc :hg
12.88-:tags ("lisp")
12.89-:rules ((build () (print (asdf:make :skel/cli)))
12.90- (clean () #$rm -rf */*.fasl$#))
12.91-:docs ((:org "readme"))
12.92-:components
12.93-((:elisp "sk"))
12.94-:stash "~/dev/comp/stash"
12.95-:shed "~/dev/comp/shed"
12.96-:snippets
12.97-((autogen #$sbcl --eval '(ql:quickload :app/cli/skel)' --eval '(asdf:make :app/cli/skel)'$#))
12.98-#+end_src
12.99-** version control
12.100-=skel= integrates closely with our Version Control System (VCS) which
12.101-is built on [[https://www.mercurial-scm.org/][Mercurial]], but we also interact with and host many [[https://git-scm.com/][Git]]
12.102-repositories.
12.103-
12.104-The =skel= tool helps us abstract away the differences between git/hg
12.105-and make maximum use of their utility. When you run a =skel vc=
12.106-command the currently active ~sk-project~ and configuration are used
12.107-to determine the appropriate VC backend to call. New backends can of
12.108-course be added as extensions.
12.109-
12.110-** TODO compilers
12.111-- State "TODO" from [2023-12-09 Sat 19:28]
12.112-One of the most unusual features of =skel= is the compiler set. With
12.113-the =skel= CLI you can compile the following types of files for your
12.114-project directly from a ~skelfile~:
12.115-- Makefile (.mk)
12.116-- Lisp system defs (.asd)
12.117-- Cargo.toml
12.118-- Containerfile
12.119-- .hgignore/.gitignore
12.120-
12.121-We treat skelfiles as the mother of all build formats and consolidate
12.122-different formats into our own project DSL. This helps reduce
12.123-complexity while increasing capability and portability.
12.124-
12.125-Project compilation occurs on demand with the =sk compile= command.
12.126-
12.127-** TODO virtualization
12.128-- State "TODO" from [2023-12-09 Sat 18:55]
12.129-
12.130- =skel= offers a mechanism for generating and running Virtual
12.131- Machines (VMs) and Containers. Under the hood we depend on [[https://podman.io/][podman]]
12.132- for our container runtime as well as [[https://www.qemu.org/][QEMU]] for some
12.133- functionality.
12.134-
12.135-** TODO emacs integration
12.136-- State "TODO" from [2023-12-09 Sat 19:30]
12.137-=sk.el= is the Emacs support package for skel. It contains a
12.138-=skel-mode= for working with skelfiles and will soon contain
12.139-additional built-in integrations for =project.el=, =vc.el=, and more.
12.140-** TODO deployment
12.141-- State "TODO" from [2023-12-09 Sat 19:37]
12.142-** TODO visualization
12.143-- State "TODO" from [2023-12-09 Sat 19:37]
12.144-* help
12.145-#+begin_src shell :results pp replace :exports both
12.146-skel -h
12.147-#+end_src
12.148-
12.149-#+RESULTS:
12.150-#+begin_example
12.151-skel v0.1.1
12.152- usage: skel [global] <command> [<arg>]
12.153-
12.154- A hacker's project compiler and build tool.
12.155- options:
12.156- -h/--help* : print this message
12.157- -v/--version* : print version
12.158- -d/--debug* : set log level (debug,info,trace,warn)
12.159- -c/--config* : set a custom skel user config
12.160- -i/--input : input source
12.161- -o/--output : output target
12.162- commands:
12.163- init : initialize a skelfile in the current directory
12.164- -n/--name : project name
12.165-
12.166- show : describe the project skelfile
12.167- -f/--file : path to skelfile
12.168-
12.169- inspect : inspect the project skelfile
12.170- -f/--file : path to skelfile
12.171-
12.172- make : build project targets
12.173- -t/--target : target to build
12.174-
12.175- run : run a script or command
12.176-
12.177- push : push the current project upstream
12.178-
12.179- pull : pull the current project from remote
12.180-
12.181- clone : clone a remote project
12.182-
12.183- commit : commit changes to the project vc
12.184-
12.185- edit : edit a project file
12.186-
12.187- shell : open the sk-shell interpreter
12.188-
12.189-#+end_example
12.190-
13.1--- a/core/app/tz.org Mon May 27 22:04:39 2024 -0400
13.2+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
13.3@@ -1,12 +0,0 @@
13.4-{{{header(tz,Richard Westhaver,ellis@rwest.io)}}}
13.5-
13.6-=tz= is a small binary for packing and unpacking compressed archives
13.7-(tar+zstd).
13.8-
13.9-* help
13.10-#+begin_src shell :results pp replace
13.11-tz -h
13.12-#+end_src
13.13-
13.14-#+RESULTS:
13.15-: mtz [pack|unpack|unpackr] PATH
14.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
14.2+++ b/core/bin/homer.org Sun Jun 02 00:42:41 2024 -0400
14.3@@ -0,0 +1,26 @@
14.4+#+title: homer
14.5+#+author: Richard Westhaver
14.6+* help
14.7+#+begin_src shell :results pp replace
14.8+homer -h
14.9+#+end_src
14.10+
14.11+#+RESULTS:
14.12+#+begin_example
14.13+homer v0.1.0 --- user home manager
14.14+
14.15+ usage: homer [global] <command> [<arg>]
14.16+
14.17+options:
14.18+ -l/--level* : set the log level
14.19+ -h/--help* : print help
14.20+ -v/--version* : print version
14.21+ -f/--force* : use force
14.22+
14.23+commands:
14.24+ show
14.25+ check
14.26+ push
14.27+ pull
14.28+ install
14.29+#+end_example
15.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
15.2+++ b/core/bin/krypt.org Sun Jun 02 00:42:41 2024 -0400
15.3@@ -0,0 +1,26 @@
15.4+#+title: krypt
15.5+#+author: Richard Westhaver
15.6+* help
15.7+#+begin_src shell :results pp replace
15.8+krypt -h
15.9+#+end_src
15.10+
15.11+#+RESULTS:
15.12+#+begin_example
15.13+Krypt CLI
15.14+
15.15+Usage: krypt [OPTIONS] [COMMAND]
15.16+
15.17+Commands:
15.18+ check check service providers and config
15.19+ show Show Krypt info
15.20+ search Query the Krypt
15.21+ help Print this message or the help of the given subcommand(s)
15.22+
15.23+Options:
15.24+ -c, --cfg <CFG> Set the default config file [env: KRYPT_CONFIG_FILE=]
15.25+ -u, --user <USER> Set a user for this command [env: USER=ellis]
15.26+ -l, --level... Set log level
15.27+ -h, --help Print help
15.28+ -V, --version Print version
15.29+#+end_example
16.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
16.2+++ b/core/bin/mailman.org Sun Jun 02 00:42:41 2024 -0400
16.3@@ -0,0 +1,27 @@
16.4+#+title: mailman
16.5+#+author: Richard Westhaver
16.6+* help
16.7+#+begin_src shell :results pp replace
16.8+mailman -h
16.9+#+end_src
16.10+
16.11+#+RESULTS:
16.12+#+begin_example
16.13+Mail client util
16.14+
16.15+Usage: mailman [OPTIONS] [COMMAND]
16.16+
16.17+Commands:
16.18+ ping Ping the server
16.19+ search Search for items
16.20+ import Import an account
16.21+ export Export an account
16.22+ help Print this message or the help of the given subcommand(s)
16.23+
16.24+Options:
16.25+ -c, --cfg <CFG> Set the default config file [env: MAILMAN_CONFIG_FILE=]
16.26+ -u, --user <USER> Set a user for this command [env: USER=ellis]
16.27+ -l, --level... Set log level
16.28+ -h, --help Print help
16.29+ -V, --version Print version
16.30+#+end_example
17.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
17.2+++ b/core/bin/organ.org Sun Jun 02 00:42:41 2024 -0400
17.3@@ -0,0 +1,43 @@
17.4+#+title: organ
17.5+#+author: Richard Westhaver
17.6+
17.7+The =organ= CLI tool is used to manipulate [[https://orgmode.org/][Org Mode]] files.
17.8+
17.9+* Overview
17.10+=Org-mode= the application depends on Emacs (it's written in Emacs
17.11+Lisp) but that doesn't mean we need to. To solve the issue of
17.12+interoperability between different systems, we are developing a tool
17.13+called [[https://lab.rwest.io/comp/core/-/tree/branch/default/lisp/lib/organ][organ]]. The purpose of =organ= is to provide an external API for
17.14+Org documents that doesn't depend on GNU Emacs.
17.15+
17.16+If we were designing a /personal/ note-taking system, I would argue
17.17+that we don't need this tool. The problem is it's /not/ personal - we
17.18+have a much wider intended audience and need to present information in
17.19+many different ways. This means thinking about hundreds to thousands
17.20+of documents instead of tens, about processing those documents into a
17.21+full-text search database, and reducing cost along the way.
17.22+
17.23+Emacs can do all of these things, but do you really want it to?
17.24+
17.25+* help
17.26+#+begin_src shell :results pp replace
17.27+organ -h
17.28+#+end_src
17.29+
17.30+#+RESULTS:
17.31+#+begin_example
17.32+organ v0.0.1 --- org-mode toolbox
17.33+
17.34+ usage: organ [global] <command> [<arg>]
17.35+
17.36+options:
17.37+ -l/--level* : set the log level
17.38+ -h/--help* : print help
17.39+ -v/--version* : print version
17.40+
17.41+commands:
17.42+ inspect : inspect an org file
17.43+ show : display local org info
17.44+ describe : describe local org info
17.45+ parse
17.46+#+end_example
18.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
18.2+++ b/core/bin/packy.org Sun Jun 02 00:42:41 2024 -0400
18.3@@ -0,0 +1,31 @@
18.4+#+title: packy
18.5+#+author: Richard Westhaver
18.6+
18.7+Packy is a universal package manager. The packy CLI tool is used to
18.8+query and download resources from local or remote stores.
18.9+* help
18.10+#+begin_src shell :results pp replace
18.11+packy -h
18.12+#+end_src
18.13+
18.14+#+RESULTS:
18.15+#+begin_example
18.16+#:debug 0.190001; (#S(CLI-NODE
18.17+ :KIND OPT
18.18+ :FORM #<CLI-OPT help :global T :val T>))
18.19+packy v0.1.0 --- Universal Package Manager
18.20+
18.21+ usage: packy [global] <command> [<arg>]
18.22+
18.23+options:
18.24+ -l/--level* : set the log level
18.25+ -h/--help* : print help
18.26+ -v/--version* : print version
18.27+
18.28+commands:
18.29+ show
18.30+#:debug 0.193334; /home/ellis/comp/org/docs/core/bin
18.31+; #(#<CLI-OPT help :global T :val NIL>)
18.32+; NIL
18.33+; #()
18.34+#+end_example
19.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
19.2+++ b/core/bin/rdb.org Sun Jun 02 00:42:41 2024 -0400
19.3@@ -0,0 +1,11 @@
19.4+#+title: rdb
19.5+#+author: Richard Westhaver
19.6+
19.7+The =rdb= cli tool is a simple RocksDB management utility.
19.8+
19.9+* help
19.10+#+begin_src shell :results pp replace
19.11+rdb -h
19.12+#+end_src
19.13+
19.14+#+RESULTS:
20.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
20.2+++ b/core/bin/readme.org Sun Jun 02 00:42:41 2024 -0400
20.3@@ -0,0 +1,12 @@
20.4+#+title:
20.5+#+author: Richard Westhaver
20.6+#+description: Core Program Docs
20.7+#+options: ^:nil toc:nil num:nil html-postamble:nil
20.8+#+export_file_name: index
20.9+* [[file:skel.org][skel]] :lisp:
20.10+* [[file:organ.org][organ]] :lisp:
20.11+* [[file:packy.org][packy]] :lisp:
20.12+* [[file:homer.org][homer]] :lisp:
20.13+* [[file:rdb.org][rdb]] :lisp:
20.14+* [[file:mailman.org][mailman]] :rust:
20.15+* [[file:krypt.org][krypt]] :rust:lisp:
21.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
21.2+++ b/core/bin/skel.org Sun Jun 02 00:42:41 2024 -0400
21.3@@ -0,0 +1,192 @@
21.4+#+title: skel
21.5+#+author: Richard Westhaver
21.6+
21.7+The =skel= CLI is the primary build tool for contributors and serves a
21.8+similar role to language-agnostic build tools like [[https://www.gnu.org/software/make/][GNU Make]], but with
21.9+the features and ease-of-use of language-specific build tools like
21.10+Rust's [[https://github.com/rust-lang/cargo][Cargo]].
21.11+
21.12+* features
21.13+** configuration
21.14+The ~skel~ tool can be configured at runtime using the CLI flags, or
21.15+via local configuration files. The configuration files are in the
21.16+~skelfile~ format and are assigned the following locations by default:
21.17+- ~*default-user-skelrc*~ :: =$HOME/.skelrc=
21.18+- ~*default-system-skelrc*~ :: =/etc/skel/skelrc=
21.19+
21.20+Both files are optional and the user skelrc takes precedence over
21.21+system.
21.22+
21.23+Example =~/.skelrc=:
21.24+#+begin_src shell :results output
21.25+cat ~/.skelrc
21.26+#+end_src
21.27+
21.28+#+RESULTS:
21.29+#+begin_example
21.30+;;; .skelrc @ 2023-10-12.02:58:08 -*- mode: skel; -*-
21.31+:name "Richard Westhaver <ellis@rwest.io>"
21.32+:user "ellis"
21.33+:version "0.1.0"
21.34+:tags ("auto")
21.35+:fmt :pretty
21.36+:vc :hg
21.37+:auto-insert t
21.38+:license :mpl2
21.39+:log-level :info
21.40+:stash ".stash"
21.41+;; :scratch ".stash/scratch"
21.42+:cache ".cache"
21.43+:registry ".data/skel/registry"
21.44+:scripts ("/usr/local/share/stash/scripts" "~/stash/scripts")
21.45+:alias-list
21.46+(("p" "vc push")
21.47+ ("P" "vc pull")
21.48+ ("ci" "vc commit"))
21.49+#+end_example
21.50+
21.51+** projects
21.52+Projects are the highest-level objects int the ~skel~ system. A project
21.53+consists of a list of slots which are populated automatically or by
21.54+the user. Once a project is initialized the slots can be accessed and
21.55+a set of high-level operations can be performed.
21.56+
21.57+The easiest way to initialize a project is with a ~skelfile~. These
21.58+files are parsed as a simplified Lisp dialect and generate
21.59+~sk-project~ objects based on their contents.
21.60+
21.61+The simplest project looks like this:
21.62+
21.63+#+begin_src skel :results pp replace :exports both
21.64+:name hello-world
21.65+#+end_src
21.66+
21.67+Don't worry, this is still lisp - the parentheses are implied. All we
21.68+actually need is a name to generate an object, and we can fill in the
21.69+blanks later as the project develops.
21.70+
21.71+Here is a more verbose example, still with only metadata:
21.72+
21.73+#+begin_src skel :results pp replace :exports both
21.74+;;; skelfile --- core skelfile -*- mode: skel; -*-
21.75+:name "core"
21.76+:author "Richard Westhaver <ellis@rwest.io>"
21.77+:version "0.1.0"
21.78+:license "MPL"
21.79+:description "The Compiler Company Core"
21.80+:vc :hg
21.81+:tags ("core")
21.82+:docs ((:org "readme") (:org "install") (:org "tests") (:org "todo"))
21.83+:import ("lisp/lisp.sk" "rust/rust.sk")
21.84+#+end_src
21.85+
21.86+Another example with rules and components:
21.87+
21.88+#+begin_src skel
21.89+;;; skelfile @ 2023-10-08.02:37:25 -*- mode: skel; -*-
21.90+:name skel
21.91+:author "ellis"
21.92+:version "0.1.0"
21.93+:description "a hacker's project compiler"
21.94+:license "MPL"
21.95+:vc :hg
21.96+:tags ("lisp")
21.97+:rules ((build () (print (asdf:make :skel/cli)))
21.98+ (clean () #$rm -rf */*.fasl$#))
21.99+:docs ((:org "readme"))
21.100+:components
21.101+((:elisp "sk"))
21.102+:stash "~/dev/comp/stash"
21.103+#+end_src
21.104+** version control
21.105+=skel= integrates closely with our Version Control System (VCS) which
21.106+is built on [[https://www.mercurial-scm.org/][Mercurial]], but we also interact with and host many [[https://git-scm.com/][Git]]
21.107+repositories.
21.108+
21.109+The =skel= tool helps us abstract away the differences between git/hg
21.110+and make maximum use of their utility. When you run a =skel vc=
21.111+command the currently active ~sk-project~ and configuration are used
21.112+to determine the appropriate VC backend to call. New backends can of
21.113+course be added as extensions.
21.114+
21.115+** TODO compilers
21.116+- State "TODO" from [2023-12-09 Sat 19:28]
21.117+One of the most unusual features of =skel= is the compiler set. With
21.118+the =skel= CLI you can compile the following types of files for your
21.119+project directly from a ~skelfile~:
21.120+- Makefile (.mk)
21.121+- Lisp system defs (.asd)
21.122+- Cargo.toml
21.123+- Containerfile
21.124+- .hgignore/.gitignore
21.125+
21.126+We treat skelfiles as the mother of all build formats and consolidate
21.127+different formats into our own project DSL. This helps reduce
21.128+complexity while increasing capability and portability.
21.129+
21.130+Project compilation occurs on demand with the =sk compile= command.
21.131+
21.132+** TODO virtualization
21.133+- State "TODO" from [2023-12-09 Sat 18:55]
21.134+
21.135+ =skel= offers a mechanism for generating and running Virtual
21.136+ Machines (VMs) and Containers. Under the hood we depend on [[https://podman.io/][podman]]
21.137+ for our container runtime as well as [[https://www.qemu.org/][QEMU]] for some
21.138+ functionality.
21.139+
21.140+** TODO emacs integration
21.141+- State "TODO" from [2023-12-09 Sat 19:30]
21.142+=sk.el= is the Emacs support package for skel. It contains a
21.143+=skel-mode= for working with skelfiles and will soon contain
21.144+additional built-in integrations for =project.el=, =vc.el=, and more.
21.145+** TODO deployment
21.146+- State "TODO" from [2023-12-09 Sat 19:37]
21.147+** TODO visualization
21.148+- State "TODO" from [2023-12-09 Sat 19:37]
21.149+* help
21.150+#+begin_src shell :results pp replace :exports both
21.151+skel -h
21.152+#+end_src
21.153+
21.154+#+RESULTS:
21.155+#+begin_example
21.156+skel v0.1.1 --- A hacker's project compiler.
21.157+
21.158+ usage: skel [global] <command> [<arg>]
21.159+
21.160+options:
21.161+ -h/--help* : print this message
21.162+ -v/--version* : print version
21.163+ -l/--level* : set log level (warn,info,debug,trace)
21.164+ -c/--config* : set a custom skel user config
21.165+ -i/--input* : input source
21.166+ -o/--output* : output target
21.167+
21.168+commands:
21.169+ init : initialize a skelfile in the current directory
21.170+ -n/--name : project name
21.171+ new : make a new skel project
21.172+ -n/--name : project name
21.173+ describe : describe a skelfile
21.174+ show : show project slots
21.175+ -f/--file : path to skelfile
21.176+ -u/--user : print user configuration
21.177+ -s/--system : print system configuration
21.178+ vc : version control
21.179+ -r/--root : repository path
21.180+ id : print the project id
21.181+ rev : print the current vc revision id
21.182+ inspect : inspect the project skelfile
21.183+ -f/--file : path to skelfile
21.184+ make : build project targets
21.185+ -t/--target : target to build
21.186+ run : run a script or command
21.187+ status : print the vc status
21.188+ push : push the current project upstream
21.189+ pull : pull the current project from remote
21.190+ clone : clone a remote project
21.191+ commit : commit changes to the project vc
21.192+ edit : edit a project file in emacs.
21.193+ shell : open the sk-shell interpreter
21.194+#+end_example
21.195+
22.1--- a/core/ffi.org Mon May 27 22:04:39 2024 -0400
22.2+++ b/core/ffi.org Sun Jun 02 00:42:41 2024 -0400
22.3@@ -1,5 +1,5 @@
22.4-{{{header(core/ffi,Richard Westhaver,ellis@rwest.io)}}}
22.5-
22.6+#+title: ffi
22.7+#+author: Richard Westhaver
22.8 This doc is about the [[https://en.wikipedia.org/wiki/Foreign_function_interface][Foreign Function Interface]] (FFI) features of the
22.9 =core=.
22.10
23.1--- a/core/install.org Mon May 27 22:04:39 2024 -0400
23.2+++ b/core/install.org Sun Jun 02 00:42:41 2024 -0400
23.3@@ -1,30 +1,12 @@
23.4-{{{header(core/install,Richard Westhaver,ellis@rwest.io,core installation
23.5-guide)}}}
23.6-#+property: header-args :dir /home/ellis/dev/comp/core/
23.7+#+title: install
23.8+#+author: Richard Westhaver
23.9+#+email: ellis@rwest.io
23.10+#+property: header-args :dir /home/ellis/comp/core/
23.11 The core is distributed via our public package registry:
23.12 [[https://packy.compiler.company][packy.compiler.company]]. You can install any part of the core - from a
23.13 complete Linux system to individual packages. Refer to the packy
23.14 documentation for details.
23.15
23.16-The simplest way to get started is by getting the installer for your
23.17-platform with the following script:
23.18-
23.19-#+begin_src shell :results pp replace :exports both :noeval t
23.20-curl --proto '=https' --tlsv1.2 -sSf https://packy.compiler.company/do/init.sh | sh # -s -- --help
23.21-#+end_src
23.22-
23.23-#+RESULTS:
23.24-#+begin_example
23.25-
23.26-cc-init 0.1.0-0941fa04c53d+
23.27-
23.28-Usage: cc-init [OPTIONS]
23.29-
23.30-Options:
23.31- -y Disable confirmation prompts
23.32- -l, --level... Set the log level
23.33- -h, --help Print help
23.34- -V, --version Print version
23.35 #+end_example
23.36 * TODO Packages
23.37 - State "TODO" from [2023-11-25 Sat 18:28]
24.1--- a/core/readme.org Mon May 27 22:04:39 2024 -0400
24.2+++ b/core/readme.org Sun Jun 02 00:42:41 2024 -0400
24.3@@ -10,14 +10,16 @@
24.4 - [[file:todo.org][Todo]] :: Project Tasks
24.5 - [[file:notes.org][Notes]] :: Internal Notes
24.6
24.7+* [[file:api.org][API]]
24.8+API Docs
24.9+
24.10 * [[file:app][APP]]
24.11 App Docs
24.12-
24.13 * [[file:lib][LIB]]
24.14 Library Docs
24.15-
24.16 * [[file:ffi.org][FFI]]
24.17 FFI Docs
24.18-
24.19-* [[file:api][API]]
24.20-API Reference
24.21+* [[file:ref][REF]]
24.22+Reference Manual
24.23+* [[file:man][MAN]]
24.24+User Manual
25.1--- a/core/stats.org Mon May 27 22:04:39 2024 -0400
25.2+++ b/core/stats.org Sun Jun 02 00:42:41 2024 -0400
25.3@@ -1,5 +1,6 @@
25.4 # -*- org-export-babel-evaluate: nil -*-
25.5-{{{header(docs/core,Richard Westhaver,ellis@rwest.io)}}}
25.6+#+title: stats
25.7+#+author: Richard Westhaver
25.8 #+property: header-args :dir /home/ellis/comp/core/
25.9 * vc
25.10 #+begin_src shell :results pp :exports results
25.11@@ -14,7 +15,8 @@
25.12 : 2024-02 5701 *****
25.13 : 2024-03 27292 ***************************
25.14 : 2024-04 23322 ***********************
25.15-: 2024-05 15468 ***************
25.16+: 2024-05 24141 ***********************
25.17+: 2024-06 341
25.18
25.19 * files
25.20 #+begin_src shell :results pp :exports results
26.1--- a/core/tests.org Mon May 27 22:04:39 2024 -0400
26.2+++ b/core/tests.org Sun Jun 02 00:42:41 2024 -0400
26.3@@ -1,5 +1,6 @@
26.4 # -*- org-export-babel-evaluate: nil -*-
26.5-{{{header(tests,Richard Westhaver,ellis@rwest.io,core test results)}}}
26.6+#+title: tests
26.7+#+author: Richard Westhaver
26.8 #+property: header-args :dir /home/ellis/dev/comp/core/
26.9 Unit tests are performed on a per-lang basis and described in the
26.10 sections below.
27.1--- a/demo/readme.org Mon May 27 22:04:39 2024 -0400
27.2+++ b/demo/readme.org Sun Jun 02 00:42:41 2024 -0400
27.3@@ -1,4 +1,5 @@
27.4-{{{header(docs/demo,Richard Westhaver,ellis@rwest.io)}}}
27.5+#+title: demo
27.6+#+author: Richard Westhaver
27.7 #+EXPORT_FILE_NAME: index
27.8
27.9 - [[file:stats.org][Stats]] :: Project Statistics
28.1--- a/demo/stats.org Mon May 27 22:04:39 2024 -0400
28.2+++ b/demo/stats.org Sun Jun 02 00:42:41 2024 -0400
28.3@@ -1,5 +1,18 @@
28.4-{{{header(demo/stats,Richard Westhaver,ellis@rwest.io)}}}
28.5-#+property: header-args :dir /home/ellis/dev/comp/demo/
28.6+#+title: stats
28.7+#+author: Richard Westhaver
28.8+#+property: header-args :dir /home/ellis/comp/demo/
28.9+#+begin_src shell :results pp :exports results
28.10+ hg churn -f "%Y-%m" -s
28.11+#+end_src
28.12+
28.13+#+RESULTS:
28.14+: 2023-04 949 *
28.15+: 2023-05 7233 ***********
28.16+: 2023-06 37455 *************************************************************
28.17+: 2023-08 99
28.18+: 2023-12 350
28.19+: 2024-04 737 *
28.20+
28.21 #+begin_src shell :results pp :exports results
28.22 tokei
28.23 #+end_src
28.24@@ -9,11 +22,11 @@
28.25 ===============================================================================
28.26 Language Files Lines Code Comments Blanks
28.27 ===============================================================================
28.28- Lisp 22 688 505 63 120
28.29+ Lisp 41 3077 2346 243 488
28.30 Makefile 1 23 20 3 0
28.31- Org 2 131 127 0 4
28.32- Shell 1 592 459 63 70
28.33- Plain Text 2 2 0 2 0
28.34+ Org 2 45 45 0 0
28.35+ Shell 2 618 477 64 77
28.36+ Plain Text 4 6 0 6 0
28.37 TOML 6 85 81 0 4
28.38 -------------------------------------------------------------------------------
28.39 HTML 1 7 7 0 0
28.40@@ -24,6 +37,6 @@
28.41 |- Markdown 9 36 0 32 4
28.42 (Total) 779 635 35 109
28.43 ===============================================================================
28.44- Total 52 2271 1834 134 303
28.45+ Total 74 4604 3611 319 674
28.46 ===============================================================================
28.47 #+end_example
29.1--- a/infra/quickstart.org Mon May 27 22:04:39 2024 -0400
29.2+++ b/infra/quickstart.org Sun Jun 02 00:42:41 2024 -0400
29.3@@ -4,8 +4,7 @@
29.4 Infra Quickstart Guide)}}}
29.5 #+property: header-args :dir /home/ellis/comp/infra/
29.6
29.7-The CC =infra= project can be thought of as one big Makefile, and
29.8-currently it is one.
29.9+The CC =infra= project is the CC software deployment toolkit.
29.10
29.11 - *Host Requirements*
29.12 - x86_64 4 core CPU
29.13@@ -59,21 +58,12 @@
29.14 | CARGO_HOME= |
29.15 | RUSTUP_HOME= |
29.16
29.17-* TODO install.sh
29.18-Install core dependencies.
29.19-
29.20-This script will install missing core binaries and libraries to the
29.21-=infra= stash directory.
29.22-- sbcl
29.23-- librocksdb
29.24-- rust
29.25-
29.26 * TODO bootstrap.sh
29.27 Bootstrap the core.
29.28
29.29-- download and run =cc-install=
29.30-- install the latest =infra= lisp core from
29.31- https://packy.compiler.company to the stash
29.32+- download and prepare target-specific dependencies
29.33+- install the latest =sk= binary from https://packy.compiler.company
29.34+ to the stash
29.35 - compile and load =bootstrap.lisp=
29.36
29.37 Upon completion a local =stash= directory is provisioned. At this
29.38@@ -95,3 +85,7 @@
29.39 the build-config and skelfile slots.
29.40
29.41 Production deployments end up at https://packy.compiler.company.
29.42+
29.43+
29.44+* TODO install.lisp
29.45+Install core packages locally.
30.1--- a/infra/stats.org Mon May 27 22:04:39 2024 -0400
30.2+++ b/infra/stats.org Sun Jun 02 00:42:41 2024 -0400
30.3@@ -1,8 +1,26 @@
30.4-{{{header(docs/core,Richard Westhaver,ellis@rwest.io)}}}
30.5+#+title: stats
30.6+#+author: Richard Westhaver
30.7+#+email: ellis@rwest.io
30.8 #+property: header-args :dir /home/ellis/comp/infra/
30.9
30.10+#+begin_src shell :results pp
30.11+ hg churn -f "%Y-%m" -s
30.12+#+end_src
30.13+
30.14+#+RESULTS:
30.15+: 2023-07 61
30.16+: 2023-11 5004 ***************************
30.17+: 2023-12 2690 **************
30.18+: 2024-01 11278 *************************************************************
30.19+: 2024-02 1021 *****
30.20+: 2024-03 21
30.21+: 2024-04 2063 ***********
30.22+: 2024-05 8443 *********************************************
30.23+: 2024-06 35
30.24+
30.25+
30.26 #+begin_src shell :results pp :exports results
30.27- tokei -e{build,cdn,dist}/*
30.28+ tokei -e{.stash}/*
30.29 #+end_src
30.30
30.31 #+RESULTS:
30.32@@ -11,10 +29,10 @@
30.33 Language Files Lines Code Comments Blanks
30.34 ===============================================================================
30.35 Lisp 4 208 144 21 43
30.36- Makefile 1 276 213 28 35
30.37+ Makefile 1 277 214 28 35
30.38 Org 3 36 30 0 6
30.39- Shell 56 1726 1276 270 180
30.40+ Shell 70 1584 1147 283 154
30.41 ===============================================================================
30.42- Total 64 2246 1663 319 264
30.43+ Total 78 2105 1535 332 238
30.44 ===============================================================================
30.45 #+end_example
31.1--- a/readme.org Mon May 27 22:04:39 2024 -0400
31.2+++ b/readme.org Sun Jun 02 00:42:41 2024 -0400
31.3@@ -1,12 +1,24 @@
31.4-{{{header(
31.5- docs,
31.6- Richard Westhaver,
31.7- ellis@rwest.io,
31.8- The Compiler Company Documentation)}}}
31.9+#+title: Documentation
31.10+#+author: Richard Westhaver
31.11+#+email: ellis@rwest.io
31.12+#+description: The Compiler Company Documentation Repository
31.13 #+EXPORT_FILE_NAME: index
31.14
31.15+This project contains the sources for all CC documentation. Choose one
31.16+of the categories below to get started.
31.17+
31.18 * [[file:meta][Meta]]
31.19+Meta-docs. Contains some internal system ramblings.
31.20 * [[file:core][Core]]
31.21+Documentation for the Core software suite.
31.22 * [[file:infra][Infra]]
31.23+Infrastructure Documentation.
31.24 * products
31.25+Products are a moving target for us at the moment. This section is
31.26+bound to change.
31.27 ** [[https://compiler.company/docs/nas-t][NAS-T]]
31.28+Network Attached Storage Technology.
31.29+
31.30+LAN Boxes and modules. Storage Tech Consulting, Distributed
31.31+Infra/Compute.
31.32+** OTOM8