Roadmap¶
Done¶
- Configuration tree — An ordered tree of labelled nodes with values, built by
New(); every entry addressable by path, withRoot,Labeland node insertion/removal preserving order. - Path language — Absolute and relative paths,
*name wildcard,//descendant axis,./.., positional[n]/[last()], value[sub = 'v'], regexp[sub =~ 're'](RE2), existence predicates, union|, and$varbindings. - Editing API —
Get/Exists/Set/SetMultiple/Insert/Remove/Move/Match/Label/DefineVariable/DefineNode— the full tree-mutation surface over path expressions. - Embedded
.augcorpus interpreter — a from-scratch pure-Go interpreter reads the entire upstream Augeas 1.14.1 lens corpus (232 modules) plus 5 original contrib lenses (Wireguard, Rclone, Caddyfile, Nftables, Unbound), reachable viaNewEngine().Lens(module, binding)and usable withTextStore/Get/Set/Match;Load/Saverun through an injectableFileSystemseam, and load failures surface under/augeas//error. Verified 1791/1791 (100%) against the corpus's own inline get+put test assertions. - The
Lensseam —Register/LensByNamelet a hand-written Go type implementingLensbe registered under a name for full get+put control; none ship pre-registered.
Next¶
- Public put for interpreted lenses — the interpreter's put (
Build) is verified correct internally, but the publicEngine.Lens(...)adapter only wires upParse(get) today;TextRetrieve/Savedo not yet work on corpus/contrib lenses obtained this way. - Byte-offset
Spantracking and non-canonical whitespace/blank-line preservation are documented follow-ons.
Quality is a standing gate: 100% coverage including error branches, gofmt + go vet clean, CI green across the six 64-bit Go targets (amd64, arm64, riscv64, loong64, ppc64le, s390x).