Skip to main content

Module projection

Module projection 

Source
Expand description

Projection: the boards a shared repository shows from other trackers, and the way work goes back to them.

A tracker is a directory of org files, so sharing one across machines has meant copying files by hand and a shell script per repository that knew every project by name. This module makes that one declaration and one verb. The repository’s vissue.toml names its boards:

[[projection.board]]
project = "ljos"                        # the project's name on its source
source  = "vault"                        # a [layouts.*] name from the user's
                                         # config, "self", or a path
mirror  = "Software/ljos/issues-mirror.org"
inbox   = "Software/ljos/inbox.org"      # optional: `* TODO` headings become issues
claims  = "Software/ljos/claims.org"     # optional: `* TODO claim ID as AGENT` lines

vissue project folds each inbox into its source, applies each claims file, and rewrites each mirror; --check says which mirrors are stale. A source that is not on this machine is reported and its mirror left as projected, so a delegate can run the same verb and learn what it can do here. vissue show ID on an id that lives only in a mirror answers from the mirror and names the inbox to write to.

Structs§

Board
One projected board, as [[projection.board]] declares it.
Outcome
What one run of vissue project did or found.

Functions§

boards
The boards <root>/vissue.toml declares; none when it declares none.
find_in_mirrors
An id that lives in one of the repository’s mirrors: the board and the heading’s text as the mirror carries it, so a reader on a machine without the source still gets an answer and is told where to write.
project
Run the projection declared under repo: fold, claim, mirror, or with check only compare each mirror’s stamp against its source.
projected_note
The one line a reader of a projected issue needs beside the heading.
resolve_source
The tracker a board’s source names, when it is on this machine: the repository’s own tracker for self, a [layouts.*] name from the user’s config, else a path that holds a tracker.