dirtabase
A build system using Arkive, but
providing a higher level list of verbs (operations), including downloads and
command execution, with caching. It's going to be the backbone of the layover
package manager.
# Run this command in this repo!
Here's what it'd output (this will probably be less chatty in the future):
================================================================
Import
================================================================
+ Can cache? false
+ Is in cache? false
dd45aedac81fb5e08f594bee978c9c6bd74b758f4f458ccd4fe250d271dcf171
8c958951d9f61be6a7b1ec48611710efc3d12ee71f3dc6ac34251afe4a95378e
================================================================
Merge
================================================================
+ Can cache? true
+ Is in cache? true
fe4462adb040549b5e632c4962e9ddfd98cd7f710949a50c137a351547eb170d
================================================================
Prefix
================================================================
+ Can cache? true
+ Is in cache? true
f5587f960dc28e8753f8558f61567cef5ed820ba9a87792d64162aed5fe9f4e0
================================================================
CmdImpure
================================================================
+ Can cache? false
+ Is in cache? false
20b1c125cbbc550603a3bbf5e6dec21802a656bf1f2d23b11011430d94f86b3b
================================================================
Filter
================================================================
+ Can cache? true
+ Is in cache? true
56b34c726418366b10db4cffe4285e04d47fd6f8161b1cda7a4bdc1a302c83e5
================================================================
Export
================================================================
+ Can cache? false
+ Is in cache? false
And you can poke around at the directory you just made!
At each step, the interface is a stream of archives passing from one stage of
processing to the next. That's the input and output stream format of
dirtabase Operators. The cache can actually pick back up after uncacheable
steps, because each archive has a full hash of its contents - we can recognize
when we've stumbled back into familiar territory.
The biggest missing pieces at this point are sandboxed (pure) commands, and Layover building on top of this tech.
Contributing
This repo is equipped to use devenv.sh, which is pretty easy to get set up. It also integrates nicely with direnv.
# These commands should work after setup!
I'm going to also set up building this as a Nix package/flake later.