Terminology

“Palette” — Violet’s name for a package. A palette is a collection of colors; your dependencies are the colors in your project’s palette.

Manifest

Every package has a manifest file, called palette.kdl. This file declares the package information and dependencies.

For a full KDL reference, refer to https://kdl.dev/.

  package {
    name "myapp"
    version "0.1.0"
    authors ["Developer <dev@example.com>"]
    license "MIT"
}

deps {
    dep "std-io" version="1.2.0"
    dep "arena-alloc" version=">=0.4.0"
    dep "mylib" git="https://codeberg.org/user/mylib" rev="abc123"
    dep "locallib" path="../locallib"
}
  

Package Section

The package section of the manifest declares package metadata.

  name "myapp"
version "0.1.0"
authors ["Developer <dev@example.com>"]
license "MIT"
repository "https://github.com/dev/myapp"
categories ["tool", "example"]
homepage "docs.myapp.com"
  

Dependencies Section

Currently, Violet dependencies are declared in the dependencies section. Dependencies can specify local paths, git repositories and tarballs.

  dep "std-io" version="1.2.0"
dep "arena-alloc" version=">=0.4.0"
dep "mylib" git="https://codeberg.org/user/mylib" rev="abc123" branch="mybranch" // fetched using git
dep "locallib" path="../locallib" // version may be omitted for local repositories
  

Any dependency added in this section will be available to add to the program via the build.vi script.

Dependencies

Packages and their dependencies are managed using the violet pkg subcommand.

  violet pkg add arena-alloc         # add dependency to palette.kdl
violet pkg add arena-alloc@0.4.0   # pinned version
violet pkg remove arena-alloc
violet pkg update                  # update all dependencies
violet pkg update <dependency>     # update a specified dependency
violet pkg publish                 # publish to registry [TBD]