Tree is a small C-based language runtime with a package manager runtime (pkgtree) that installs Tree package files into .tree/packages.
make wslmake linuxWith pkgtree runtime:
gcc -std=c11 -Wall -Wextra -O2 main.c pkgtree_runtime.c -lm -o treeWithout pkgtree runtime:
gcc -std=c11 -Wall -Wextra -O2 main.c -lm -o treeRun a script:
./tree test_packages.treeRun package manager script:
./tree pkgtree.treepkgtree_runtime.c supports two repo modes:
- Local repo directory (default):
repo - Remote repo URL (fallback):
https://...
tree.pkg stores project dependencies and repo settings.
# tree.pkg v2
repo=repo
format=2
core,1.0
json,1.0
Rules:
- Lines starting with
#are comments. repo=selects local directory path or remote URL.- Dependency entries are
name,version(orname@version).
repo/
MANIFEST.tree
pkg/
core@1.0.tree
text@1.0.tree
json@1.0.tree
toml@1.0.tree
fs@1.0.tree
cli@1.0.tree
data@1.0.tree
project@1.0.tree
net@1.0.tree
mathx@1.0.tree
build@1.0.tree
Tab-separated columns:
name<TAB>version<TAB>description<TAB>dependencies
description: human-readable package summary.dependencies:;-separated list ofpackage@versionvalues.
Example:
data 1.0 Data glue package that combines JSON and TOML json@1.0;toml@1.0
core: math/random helpers.text: string transform helpers.json: JSON wrapper helpers.toml: TOML wrapper helpers.fs: workspace path helpers.cli:argc/argvhelpers.data: combines JSON + TOML handling.project: project metadata bootstrap.net: endpoint/url dictionary helper.mathx: extra math constants/helpers.build: build profile metadata helpers.
pkgtree_install()validates local packages againstrepo/MANIFEST.tree.- Installed packages are copied to
.tree/packages/<name>/<version>/<name>@<version>.tree. tree.lockis rewritten after install with an installed package count.