ezx Releases (9): 1.11.0.0 0x8d817ff76bee5f8a754f0b8cceb7d07a indexed https://jend.leeeet.dev/files.txt?path=ezx@1.11.0.0 1.10.0.0 0xa75de0623b4b308c27d8fdf1abe399cb unindexed https://jend.leeeet.dev/files.txt?path=ezx@1.10.0.0 1.9.0.0 0x53ca730219156b024641a00935516f18 unindexed https://jend.leeeet.dev/files.txt?path=ezx@1.9.0.0 1.8.0.0 0x4490025e819484fce79cfe7c28a0963b unindexed https://jend.leeeet.dev/files.txt?path=ezx@1.8.0.0 1.7.0.0 0xd9eedaedd82ad7ac346aadcc1f92c7fb unindexed https://jend.leeeet.dev/files.txt?path=ezx@1.7.0.0 1.6.0.0 0x3f0fc9ea10e26a05d780e2727546ce31 invalid https://jend.leeeet.dev/files.txt?path=ezx@1.6.0.0 expected a fresh constructor name (duplicate declaration: Text) At https://jend.leeeet.dev/read.txt?path=ezx@1.6.0.0/src/lock/up.bend&start_line=121. Files that do not load: src/add/hub.bend, src/add/plan.bend, src/add/world.bend, src/doctor/plan.bend, src/doctor/world.bend and 14 more. expected a file at https://hub.bend-lang.com/0x49ec536f1d3da4f76d78aaece3ccda7a/manifest hashing to 49ec536f1d3da4f76d78aaece3ccda7a At https://jend.leeeet.dev/read.txt?path=ezx@1.6.0.0/src/hub/get.bend&start_line=7. Files that do not load: main.bend, src/add/run.bend, src/doctor/run.bend, src/ez/cmd.bend, src/ez/main.bend and 7 more. 1.5.0.0 0x74799d3f846634a3d7461d4336d7c9d4 invalid https://jend.leeeet.dev/files.txt?path=ezx@1.5.0.0 expected a fresh constructor name (duplicate declaration: Wait) At https://jend.leeeet.dev/read.txt?path=ezx@1.5.0.0/src/add/hub.bend&start_line=87, https://jend.leeeet.dev/read.txt?path=ezx@1.5.0.0/src/pub/plan.bend&start_line=1080, https://jend.leeeet.dev/read.txt?path=ezx@1.5.0.0/src/tool/plan.bend&start_line=867. Files that do not load: main.bend, src/add/hub.bend, src/add/plan.bend, src/add/run.bend, src/ez/cmd.bend and 5 more. 1.4.0.0 0x886223f5c47e4983fe57d887c034bc7f invalid https://jend.leeeet.dev/files.txt?path=ezx@1.4.0.0 expected a fresh constructor name (duplicate declaration: Wait) At https://jend.leeeet.dev/read.txt?path=ezx@1.4.0.0/src/add/hub.bend&start_line=87, https://jend.leeeet.dev/read.txt?path=ezx@1.4.0.0/src/pub/plan.bend&start_line=1080, https://jend.leeeet.dev/read.txt?path=ezx@1.4.0.0/src/tool/plan.bend&start_line=867. Files that do not load: main.bend, src/add/hub.bend, src/add/plan.bend, src/add/run.bend, src/ez/cmd.bend and 5 more. 1.3.0.0 0x046551eff0d59a82cf10d858b17b0c84 unindexed https://jend.leeeet.dev/files.txt?path=ezx@1.3.0.0 Definitions (2947, 1 to 100 shown): Ezx.main (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/main.bend&name=main) # the ez command line: read the words, run the command they name, and exit # as it ends def main() -> IO(Unit): Hub.nv (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=nv) # the `@` asked for def nv(world: A.World) -> String: Hub.part (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=part) # its name part, which a re-add of another version finds its entry by def part(+world: A.World) -> String: Hub.key (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=key) # the key the dependency is recorded under (EZ-LED-7) def key(+world: A.World) -> String: Hub.asked (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=asked) # the entry asked for: the word after the name. A name pins its version, so # that word is the entry, whichever place it was given in. def asked(+world: A.World) -> String: Hub.heard.at (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=heard.at) # this reply's answer when it is about the key, else the rest's. The rest # arrives as a thunk, so the first answer ends the scan. def heard.at(hit: Bool, answer: W.Answer, rest: Unit -> Maybe<&2, W.Answer>) -> Maybe<&2, W.Answer>: Hub.heard (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=heard) # the answer the World holds for a question about this key: a name, or a # package's hash def heard(rs: List<&2, W.Reply>, +key: String) -> Maybe<&2, W.Answer>: Hub.Verdict (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=Verdict) # every answer is in, with the hash the hub named and the package it serves # checked against it; a question is still open; or the add refuses type Verdict is Data: Go{hash: String, files: List<&2, K.Item>, srcs: List<&2, String>} Pending{asks: List<&2, W.Ask>} Stop{why: String} Hub.decide.body (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=decide.body) # the package, judged as the lock judges a hub package def decide.body(verdict: W.Verdict, +hash: String) -> Verdict: Hub.decide.got (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=decide.got) # the package the hub served for the hash, or why it served none def decide.got(answer: W.Answer, +hash: String, +world: A.World) -> Verdict: Hub.decide.pkg (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=decide.pkg) # the package, once it is asked for def decide.pkg(got: Maybe<&2, W.Answer>, +hash: String, +world: A.World) -> Verdict: Hub.decide.hash (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=decide.hash) # a `0x` name the hub answered, or an answer that names none def decide.hash(ok: Bool, +hash: String, +world: A.World) -> Verdict: Hub.unsaid (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=unsaid) # why the hub gave no answer, without the `ez: ` a miss is said with def unsaid(ez: Bool, +why: String) -> String: Hub.decide.said (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=decide.said) # what the hub said the name names def decide.said(answer: W.Answer, +world: A.World) -> Verdict: Hub.decide.name (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=decide.name) # the name, once it is asked of the hub def decide.name(got: Maybe<&2, W.Answer>, +world: A.World) -> Verdict: Hub.early (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=early) # why the add is refused before anything is asked, "" when it is not: a ref # and an entry both given, or a key the ledger refuses def early(+world: A.World) -> String: Hub.decide.early (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=decide.early) # a refusal the ledger alone decides def decide.early(ok: Bool, +why: String, +world: A.World) -> Verdict: Hub.decide.read (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=decide.read) # no ledger, or one that does not parse, is refused before anything else, # with the reason every command that edits a ledger gives def decide.read(read: M.Read, +world: A.World) -> Verdict: Hub.decide (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=decide) # where a World stands def decide(+world: A.World) -> Verdict: Hub.holds (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=holds) # whether a package holds a file at this path def holds(fs: List<&2, K.Item>, +at: String) -> Bool: Hub.top.one (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=top.one) # a top-level `.bend` file: one with no directory in front of it def top.one(+at: String) -> Bool: Hub.top.at (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=top.at) # this file when it is a top-level `.bend` file, else the rest's. The rest # arrives as a thunk, so the first one ends the scan. def top.at(hit: Bool, +at: String, rest: Unit -> String) -> String: Hub.top (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=top) # the first top-level `.bend` file, in manifest order, "" for none def top(fs: List<&2, K.Item>) -> String: Hub.entry.main (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=entry.main) # `main.bend` when the package holds one, else its first top-level file def entry.main(held: Bool, fs: List<&2, K.Item>) -> String: Hub.entry.of (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=entry.of) # the entry a package is recorded with when none was asked for: its # `main.bend`, else its first top-level `.bend` file, else none def entry.of(+fs: List<&2, K.Item>) -> String: Hub.entry.pick (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=entry.pick) # the entry asked for, or, when none was, the package's own def entry.pick(none: Bool, +fs: List<&2, K.Item>, +asked: String) -> String: Hub.entry (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=entry) # the entry recorded: the one asked for, else the package's own def entry(+fs: List<&2, K.Item>, +world: A.World) -> String: Hub.dep.of (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=dep.of) # the dependency recorded for a package the hub named by this hash def dep.of(+hash: String, +fs: List<&2, K.Item>, +world: A.World) -> M.Dep: Hub.outcome.fit (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=outcome.fit) # the ledger with the package added, once it is known to read back. A # ledger that could not be written so that it reads back is refused # (EZ-LED-4). def outcome.fit(fit: Bool) -> P.Outcome: Hub.outcome.entry (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=outcome.entry) # an entry asked for must be in the package def outcome.entry(held: Bool, fit: Bool, +at: String, +world: A.World) -> P.Outcome: Hub.outcome.of (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=outcome.of) # how an add ends once the package is in hand def outcome.of(+hash: String, +fs: List<&2, K.Item>, +world: A.World) -> P.Outcome: Hub.place.of (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=place.of) # where the tree is laid: under `.ez/lib` when the entry it replaces is # vendored, under BEND_LIB otherwise. A hub dependency is never vendored, so # a name the ledger already records is laid under BEND_LIB like a new one. def place.of(vend: Bool) -> P.Place: Hub.ignore.put (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=ignore.put) # `.gitignore` written ahead of the rest when the allowlist changes it def ignore.put(same: Bool, +next: String, rest: List<&2, P.Effect>) -> List<&2, P.Effect>: Hub.says (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=says) # the lines a person is told: the hash the name names, then, when there is # an entry, the import line for it, the line `ez publish` prints with the # name in place of the hash def says(+hash: String, +entry: String, +world: A.World) -> List<&2, P.Effect>: Hub.effects.of (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=effects.of) # what an add of a package the hub served does: the tree laid, its name's # file, ez.toml written, `.gitignore` when the allowlist changes, and what a # person is told def effects.of( +dep: M.Dep, +hash: String, +ls: List<&2, W.Source>, +manifest: M.Manifest, +world: A.World ) -> List<&2, P.Effect>: Hub.seal (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=seal) # a plan that refuses has no effect at all; its reason is how it ends def seal(es: List<&2, P.Effect>, outcome: P.Outcome) -> P.Plan: Hub.made (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=made) # the plan once the package is in hand def made(+hash: String, +fs: List<&2, K.Item>, +ss: List<&2, String>, +world: A.World) -> P.Plan: Hub.plan.v (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=plan.v) # the plan for where the World stands. One that still asks is a World the # interpreter did not finish, and is refused rather than guessed at. def plan.v(verdict: Verdict, +world: A.World) -> P.Plan: Hub.plan (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=plan) # `ez add @` over a World def plan(+world: A.World) -> P.Plan: Hub.asks.v (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=asks.v) # the questions still open where the World stands def asks.v(verdict: Verdict) -> List<&2, W.Ask>: Hub.wants (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=wants) # the questions a World still leaves open def wants(+world: A.World) -> List<&2, W.Ask>: Hub.refuses.plan (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=refuses.plan) # whether a plan ends in a refusal def refuses.plan(pl: P.Plan) -> Bool: Hub.refuses (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=refuses) # whether `ez add @` refuses on a World def refuses(+world: A.World) -> Bool: Hub.verdict.hash (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=verdict.hash) # the hash and files a verdict carries, none when it carries no package def verdict.hash(verdict: Verdict) -> String: Hub.verdict.files (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=verdict.files) def verdict.files(verdict: Verdict) -> List<&2, K.Item>: Hub.hash (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=hash) # the hash the hub named, as the World answered it def hash(+world: A.World) -> String: Hub.files (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=files) # the package's files, as the hub served them def files(+world: A.World) -> List<&2, K.Item>: Hub.added (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=added) # the dependency `ez add @` records on a World def added(+world: A.World) -> M.Dep: Hub.ask.hub (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=ask.hub) # the hub a question names def ask.hub(ask: W.Ask) -> String: Hub.asks.hub (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=asks.hub) # whether every question names this hub def asks.hub(as: List<&2, W.Ask>, +hub: String) -> Bool: Hub.names.one (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=names.one) # whether a question asks the hub what a name names def names.one(ask: W.Ask) -> Bool: Hub.names (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=names) # whether any question does def names(as: List<&2, W.Ask>) -> Bool: Hub.last.go (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=last.go) # the last of some lines, `prev` when there are none after it def last.go(ls: List<&2, String>, +prev: String) -> String: Hub.last (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=last) # the last line a plan says, "" when it says none def last(pl: P.Plan) -> String: Hub.names.laid (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/hub.bend&name=names.laid) # every name's file a list of effects lays, in order def names.laid(es: List<&2, P.Effect>) -> List<&2, L.Name>: Plan.Q (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=Q) # a question, before it is told which source it is about: the remote's tags, # its HEAD, what a named ref names, or the checkout at a rev type Q is Data: QTags{} QHead{} QRefs{ref: String} QClone{rev: String} Plan.ask.of (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=ask.of) # a question about a source def ask.of(question: Q, +from: String) -> Up.Ask: Plan.asks.of (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=asks.of) # each question about a source def asks.of(qs: List<&2, Q>, +from: String) -> List<&2, Up.Ask>: Plan.said (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=said) # what git printed for a question about the World's source def said(+world: A.World, question: Q) -> Up.Said: Plan.said.text (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=said.text) # what was printed, "" when nothing was def said.text(printed: Up.Said) -> String: Plan.rows (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=rows) # the rows git printed for a question, none when nothing was def rows(+world: A.World, question: Q) -> List<&2, Git.Row>: Plan.default.ref (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=default.ref) # the ref `ez add` pins when none was asked for: the tag `Git.choose` takes # from every tag on the remote, the greatest release, else the greatest # pre-release; else the branch HEAD's symref names (EZ-RES-1) def default.ref(+world: A.World) -> String: Plan.tag.of (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=tag.of) # the tag or branch recorded, as a ref was given: none for a commit, the # default one for none, and the ref itself otherwise def tag.of(rev: Bool, empty: Bool, +world: A.World) -> String: Plan.tag (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=tag) # the tag or branch the ledger records def tag(+world: A.World) -> String: Plan.Tip (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=Tip) # the commit a ref names, a question still to ask, or why there is none type Tip is Data: At{rev: String} TipAsk{q: Q} TipNo{why: String} Plan.tip.found (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=tip.found) # a commit the rows named, or why they named none def tip.found(+rev: String, why: String) -> Tip: Plan.tip.refs (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=tip.refs) # a named ref, read exactly as `refs/tags/`, its peeled commit first, # then `refs/heads/` def tip.refs(printed: Up.Said, +world: A.World) -> Tip: Plan.tip.head.rows (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=tip.head.rows) # the default branch, when no tag is semver-ish: the commit HEAD names, and # the branch its symref names, which is recorded as the ref followed def tip.head.rows(+rows: List<&2, Git.Row>, +world: A.World) -> Tip: Plan.tip.head (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=tip.head) def tip.head(printed: Up.Said, +world: A.World) -> Tip: Plan.tip.chosen (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=tip.chosen) # the tag chosen, through its peeled commit, or HEAD when none was def tip.chosen(none: Bool, +chosen: String, +rows: List<&2, Git.Row>, +world: A.World) -> Tip: Plan.tip.tags.rows (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=tip.tags.rows) def tip.tags.rows(+rows: List<&2, Git.Row>, +world: A.World) -> Tip: Plan.tip.tags (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=tip.tags) def tip.tags(printed: Up.Said, +world: A.World) -> Tip: Plan.tip.named (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=tip.named) # a ref that is not a commit: the default one, or the one named def tip.named(empty: Bool, +world: A.World) -> Tip: Plan.tip.of (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=tip.of) # a 40-hex ref is the commit, and asks the remote nothing def tip.of(rev: Bool, empty: Bool, +world: A.World) -> Tip: Plan.tip (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=tip) # the commit the ref names def tip(+world: A.World) -> Tip: Plan.tip.rev (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=tip.rev) def tip.rev(tip: Tip) -> String: Plan.rev (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=rev) # the commit pinned, "" while it is not known def rev(+world: A.World) -> String: Plan.Co (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=Co) # the checkout at the rev: its NAR hash and every file's text, or the # question still open, or why there is none type Co is Data: Co{nar: String, files: List<&2, K.Source>} CoWait{} CoNo{why: String} Plan.co.of (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=co.of) def co.of(answer: Up.Answer) -> Co: Plan.co.heard (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=co.heard) def co.heard(got: Up.Heard) -> Co: Plan.co.at (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=co.at) # the checkout at a rev, as the World answered it def co.at(+world: A.World, +rev: String) -> Co: Plan.co (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=co) # the checkout at the rev the ref names def co(+world: A.World) -> Co: Plan.co.files (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=co.files) def co.files(checkout: Co) -> List<&2, K.Source>: Plan.co.nar (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=co.nar) def co.nar(checkout: Co) -> String: Plan.files (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=files) # every file of the checkout, none while it is not known def files(+world: A.World) -> List<&2, K.Source>: Plan.nar (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=nar) # the checkout's NAR hash def nar(+world: A.World) -> String: Plan.tree.toml (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=tree.toml) # the checkout's own ez.toml, None when it has none def tree.toml(+world: A.World) -> Maybe<&2, String>: Plan.pkg (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=pkg) # the `[package] name` the checkout gives itself, "" for none def pkg(+world: A.World) -> String: Plan.entry (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=entry) # the entry the package is walked from: the one given, else the checkout's # `[package] entry`, else its `bin`, else `main.bend` (EZ-RES-2) def entry(+world: A.World) -> String: Plan.fuel (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=fuel) # fuel enough for a walk over these files: one step for the entry and one for # every import it can queue, and every import is a line of some file. So a # walk over a checkout never runs out, and the fuel is a function of the # checkout rather than a number, which keeps the walk from unrolling when a # proof reasons about a checkout it does not know. def fuel(fs: List<&2, K.Source>) -> Nat: Plan.walked (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=walked) # the package the entry is published as, walked over the checkout's files def walked(+world: A.World) -> K.Walked: Plan.name (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=name) # the name the dependency is recorded under (EZ-LED-7) def name(+world: A.World) -> String: Plan.why (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=why) # why that name cannot be recorded, "" when it can def why(+world: A.World) -> String: Plan.decided (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=decided) # whether the ledger alone decides the name: a `--rename` was given, or the # ledger already records this source def decided(+world: A.World) -> Bool: Plan.early (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=early) # why the name is refused before anything is asked, "" when it is not. A # `--rename` that is no key is always refused here, and a clash only when # the ledger alone decides the name; one that turns on the checkout's # `[package] name` is decided after the walk. def early(+world: A.World) -> String: Plan.Verdict (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=Verdict) # where the World stands before the walk: every answer it needs is in, a # question is still open, or the add refuses type Verdict is Data: Go{} Pending{qs: List<&2, Q>} Stop{why: String} Plan.decide.co (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=decide.co) # the checkout answered, still to ask, or not to be had def decide.co(checkout: Co, +rev: String) -> Verdict: Plan.decide.tip (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=decide.tip) # what the ref names, then the checkout at it def decide.tip(tip: Tip, +world: A.World) -> Verdict: Plan.decide.early (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=decide.early) # a name refused before anything is asked def decide.early(ok: Bool, +why: String, +world: A.World) -> Verdict: Plan.decide.place (https://jend.leeeet.dev/definition.txt?path=ezx@1.11.0.0/src/add/plan.bend&name=decide.place) # a target that names nothing is refused before anything is asked def decide.place(place: Tgt.Place, +world: A.World) -> Verdict: More: https://jend.leeeet.dev/packages/ezx.txt?definitions_offset=100