Skip to content

Project Files

The Nubo package manager uses two files in the project root.

_nubo.yaml
lock.yaml

_nubo.yaml stores project metadata and the direct packages added to the project.

Example:

name: test
author:
name: test
packages:
- source: https://github.com/nubolang/color.git
commit: f5063d6
FieldDescription
nameProject/package name.
author.nameAuthor name.
author.websiteOptional author website.
repositoryOptional project repository URL.
packagesDirect packages added to this project.

Each item in packages contains:

FieldDescription
sourcePackage Git source URL.
commitShort commit hash for display and direct dependency tracking.

lock.yaml stores the exact dependency state.

Example:

version: "1"
nubo_version: 0.4.0-alpha
entries:
- name: nubolang/color
source: https://github.com/nubolang/color.git
commit_hash: f5063d6fa53bf8be818f4316273ee81fb5474d21
hash: sha256:d0b1dc4e7af156690f762c2d90c6bbe62c7ad265cd9a9e9e54c30fac26cbf0ef
FieldDescription
versionLockfile format version.
nubo_versionNubo version that wrote the lockfile.
entriesExact locked dependency entries.

Each lock entry contains:

FieldDescription
namePackage name, usually user/repo or user/repo/subpath.
sourceFull source URL.
commit_hashFull Git commit hash.
hashSHA-256 hash of the package folder contents.
metaOptional metadata.

_nubo.yaml is for the project and direct dependencies.

lock.yaml is for reproducible installs.

The short commit in _nubo.yaml is readable. The full commit and folder hash in lock.yaml are used for exact downloads and validation.

nubo init creates both files.

Terminal window
nubo init

If the files already exist, Nubo loads them.

If lock.yaml does not exist, Nubo creates a new empty lockfile in memory and writes it when needed.