Mason-Registry

The default mason registry is a GitHub repository containing a list of versioned manifest files.

View the official mason registry here: Mason-Registry.

A registry will be downloaded to $MASON_HOME/<name> by mason update for each registry named in $MASON_REGISTRY if a registry at that location does not already exist.

The registry consists of a hierarchy like the following:

mason-registry/
   Bricks/
      Curl/
         1.0.0.toml
         2.0.0.toml
      RecordParser/
         1.0.0.toml
         1.1.0.toml
         1.2.0.toml
      VisualDebug/
         2.2.0.toml
         2.2.1.toml

Each versioned manifest file is identical to the manifest file in the top-level directory of the package repository, with the exception of a file path or URL pointing to the repository and revision in which the version is located.

Continuing the example from before, the ‘registry’ 0.1.0.toml would include the additional source field:

[brick]
authors = ["Sam Partee <Sam@Partee.com>"]
chplVersion = "1.16.0"
license = "None"
name = "MyPackage"
source = "https://github.com/Spartee/MyPackage"
version = "0.1.0"

[dependencies]
curl = '1.0.0'

Search the registry with mason search <query>, which will list all packages (and their latest version) that contain <query> in their names (case-insensitive). If no query is provided, all packages in the registry will be listed.

Searching with the --show flag will output the toml file of a package if the search returns a single package. If the package has multiple versions it will return the most recent.

Note

Packages will be listed regardless of their chplVersion compatibility.

Local Registries

It is sometimes desirable to use a local registry, for example with libraries you don’t intend to distribute. The following steps create a local registry starting with Bricks for PackageA which was created with mason new PackageA. Once you have successfully created a local registry, mason publish <path-to-local-registry> can be used to publish automatically.

First create, commit, and tag the packages that will be in the registry:

Create a local registry:

# Create the local registry
mkdir /path/to/local/registry
cd /path/to/local/registry
# Create /Bricks/DummyPackage/0.1.0.toml
touch README.md

# Initialize and check everything in to the git repository
git init
git add README.md /Bricks/DummyPackage/0.1.0.toml
git commit -m 'First Commit'

Alternatively, you may automatically create a local registry by running mason publish --create-registry path/to/local/registry. Now MASON_REGISTRY can be set to point at both the local registry and the default registry.

export MASON_REGISTRY="local-registry|/path/to/local/registry,mason-registry|https://github.com/chapel-lang/mason-registry"

Adding a local package to the local registry

mason new PackageA
cd PackageA
git add .
git commit -m "First Commit"
mason publish <path-to-local-registry>

The MyPackage package is now free to include PackageA as dependency by adding the it as a dependency with mason add package@version

cd MyPackage
mason add PackageA@0.1.0