Andaman

From Fyra Wiki
Revision as of 04:16, 10 June 2023 by Madomado (talk | contribs) (init)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Andaman, often abbreviated as anda, is a modern packaged build toolchain designed to simplify building different package formats for different projects in the same repository. It mainly supports monorepo setups, especially ones with CI support like GitHub. It currently supports building RPMs, OCI images and Flatpak packages. It is written by Fyra Labs with the Rust programming language.

Mechanisms

Currently, Anda is simply a meta-build system that calls upon other build systems to build and distribute packages. It reads the project manifest in anda.hcl and calls the corresponding build system to build the package. Multiple projects can be included in a single repository (known as a monorepo) recursively in different directories. The root directory contains a main configuration file (also anda.hcl) and the configurations will be inherited. All the other anda.hcl files in its subdirectory can independently represent multiple projects, and multiple ways to build a package can be specified in each project. Once properly configured, a project can be built by anda build subdirectory_path/project_name.

AndaX

AndaX is an embedded scripting system powered by Rhai. It is mainly for supporting automatic updates, but it is also the scripting system used behind pre_script and post_script.

Automatic Updates

Anda has refined support over automatically updating packages via the anda update command. The command finds all the projects with the file update.rhai in the same directory or if the configuration file has the update property set to a value:

project proj_name {
  update = "path/to/update_script.rhai"
  labels {
    a = "1"
  }
}

Then, AndaX executes the script. Projects can also be filtered by adding --filters key=value,key2=value2 to the command. For example, the above project will be ran for --filters a=1 or even without filters regarding the key a, but it will be filtered for --filters a=2.

History

The name Andaman refers to the Andaman Sea next to Thailand, and follows the Ultramarine marine naming usage.