Skip to content

Latest commit

 

History

History
75 lines (51 loc) · 1.69 KB

README.md

File metadata and controls

75 lines (51 loc) · 1.69 KB

vorpal

Build and deliver software reliably with one magical tool.

Overview

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

Design

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.

vorpal

Development

Requirements

The following tools are required to develop:

  • curl (http client)
  • direnv (environment variables)
  • rustup (language toolchains)

Steps

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