Build and deliver software reliably with one magical tool.
Vorpal's goal is to package and distribute software reliably to local (development) and remote (cloud, self-hosted, etc) environments. It uses a vorpal.ncl
file written in Nickel that allows you to "describe" every aspect of your software dependencies in a repeatable and reproducible way.
# Built-in validation contracts
let { Config, .. } = import "schema.ncl" in
# Built-in language functions
let { RustPackage, .. } = import "language.ncl" in
# Project configuration (with `--system "<system>"` value)
fun system => {
packages = {
default = RustPackage {
cargo_hash = "<hash>",
name = "vorpal",
source = ".",
systems = ["aarch64-linux", "x86_64-linux"],
target = system
}
}
} | Config
Below is the existing working diagram that illustrates the platform's design:
Caution
This design is subject to change at ANY moment and is a work in progress.
The following tools are required to develop:
The following steps guide how to setup and run commands in the development environment.
Important
Steps must be run in the root of the cloned repository.
- Run
dev.sh
script to bootstrap dependencies:
./dev.sh
- Run to enter development environment:
direnv allow
- Build the source code with:
Important
Review the makefile
for all development commands.
make