On this page
article
Packaging System
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]