Task-linking plugin for tec, the way Jira links issues: typed,
bidirectional relationships between two tasks.
link is a tec plugin: install it at <pgndir>/link/link (this repo
ships link as a symlink to build/link, so tec link ... works once
built with make) and it's callable as tec link <command>, or run
directly as link <command>.
link add [<src>] <type> <dst> link <src> to <dst> as <type> (bidirectional)
link rm [<src>] <type> <dst> remove that link
link show [<task>] show a task's links, grouped by type
link types list the supported link types
<src>/<task>, if omitted, default to the desk's current task (same
convention as gmux(1)). <src>/<dst> must be existing task IDs in
the resolved env/desk.
Each link is stored on both sides, using the matching inverse type, so
show gives the same picture from either task:
blocks <-> blocked-by
relates <-> relates
duplicates <-> duplicated-by
clones <-> cloned-by
parent <-> child
link add A blocks B records blocks : B on task A's own data
(A/.tec/pgn/link) and blocked-by : A on task B's. relates is its
own inverse, so it's recorded as relates on both sides. Adding an
already-existing link is a no-op; rm errors if the link doesn't
exist.
Mirrors gmux(1)'s option set: -T taskbase, -P pgnbase (accepted,
unused), -e env, -d desk, -h. -e/-d, if omitted, are read from
the taskbase's/env's current-env/current-desk toggles, the same way
tec(1) and gmux(1) resolve them - so tec link ... works out of
the box without either.