Repository navigation
Releases
Releases · aciru4L/barn
Barn 0.1.0
Added
barn hatch,install,add,remove,upgrade,verify,layandinspect, whose
--flatlists the eggs a project uses.barn.json, strict JSON, with dependencies and overrides, whichadd,removeand
upgraderewrite. There is no lock file: the versions follow frombarn.json, and the
SHA-256 sums of each egg live in~/.barn/eggs.- Minimal version selection: each egg gets the newest version asked for, and incompatible
versions are an error. - A local eggs folder with immutable releases and snapshots:
~/.barn/eggs, oreggs/
underBARN_HOME. The commands that install or lay eggs create it when it is missing.
Snapshots sit beside their release as0.1.0_snapshot_<stamp>_<hash>, named by the time
they were laid and their content. 0.1.0asks for that release only, never a snapshot of it;0.1.0_snapshotasks for the
newest snapshot.- Prebuilt executables for Linux, macOS and Windows on each GitHub release.
barn buildandbarn run, which stop when a copy in.barn/is not the version
barn.jsonasks for or differs from its sums in~/.barn/eggs, and otherwise hand the project togoose buildor
goose run.barn test, which does the same checks and then runstest/main_test.goose, or the file
testnames inbarn.json.barn hatchwrites the test file, andbarn installupdates
its imports as it does those ofmain.goose.- Eggs laid from the project folder, or from the folder
sourcenames:<name>.gooseat
its top, the other files under it, andLICENSEandREADME. Tests, examples, benches,
docs, dot-files, the main and test files and whateverexcludelists stay out, and in a
git repository so do the files git ignores. barn hatchmakes an egg with<name>.gooseat the top;barn hatch --appadds
main.goose.barn lay --releasetags the commitv<version>in a git repository with nothing left to
commit, stores the release with abarn.originfile and asks before pushing the tag to
origin. Withoutorigin, or when the answer is no, the release stays on this machine.install,add,removeandupgradefetch missing releases from their git repository,
and~/.barn/config.jsoncan point a host at a mirror.addandupgradefind releases on the repository too, and refuse a tag that has moved
since it was fetched."local_priority": false,--set local_priority=...for one command, and--offline.barn install --forcefetches a release that was changed in the eggs folder again from
its repository, after checking that its tag has not moved; a changed snapshot asks to be
deleted and laid again.- Snapshots fetched from their repository's commits:
0.1.0_snapshottakes the newest
commit on the default branch whosebarn.jsonsays0.1.0, and an exact
0.1.0_snapshot_<stamp>_<hash>the commit it names. Snapshots laid on this machine come
first unless local priority is off, and an unreachable repository falls back to the
snapshots already here with a warning. - A
tokenfor each host in~/.barn/config.json, with an optionaluser, sent to that
host only as HTTP basic authentication. Barn passes it togitin the environment rather
than on the command line. - Plain Goose libraries without
barn.jsoninstall as eggs with no dependencies, named
after the one<name>.gooseat their top that declaresnamespace <name>;. - Eggs named by their repository,
acme/numbersorgitlab.com/acme/tools, and imported
under thenamein theirbarn.json;"repo"says where a project lives when that
differs from<owner>/<name>. The eggs folder keeps them under their host. barn lay --check, which checks the egg and lists its files without laying it, and a
warning when a file in the egg names where a dependency comes from.- Owners with uppercase letters, from
--owner,BARN_OWNER,barn.jsonoradd,remove
andupgrade, are lowercased with a warning. Egg names stay lowercase only, since they are
folder and import names; an uppercase one is an error that suggests the lowercase spelling. - A failed fetch says why, with the reason
gitgave. Fetching works with a deepBARN_HOME
on Windows: the temporary folders have short names, andgitruns withcore.longpathson.