9.8 ADR-8: Standalone CLI as a thin adapter, not a rewrite

Status: accepted

Context: ADR-7 anticipated this — splitting into three artifacts was justified partly because it makes a future CLI "a small addition rather than a rewrite," provided no Maven type leaks into wiki-publisher. Maven-only distribution excludes Gradle projects, plain scripts and non-Maven CI pipelines from using this project at all.

Decision: A fourth artifact, atlassian-cli, depends only on wiki-publisher and does nothing but turn command-line input into a Configuration and call Publisher.publish() — no new business logic anywhere else. It ships two artifacts from one build: a thin jar for Maven Central, and a shaded jar attached to GitHub Releases for dependency-free java -jar use. Argument parsing is hand-written rather than via a parsing library, keeping the module’s own dependency footprint to wiki-publisher plus jackson-dataformat-yaml for the multi-mapper configuration file — a natural extension of the Jackson family already used elsewhere in the project, not a new kind of dependency. Credentials follow a different rule than the Maven plugin’s "no CLI property": the CLI has no --password flag at all, because a standalone process’s argv is visible via shell history and ps//proc for as long as it runs — a broader exposure than the Maven-specific "leaks into a CI log" threat 11. Risks and Technical Debt and SECURITY.md originally described for the plugin.

Consequences: Confirms ADR-7’s premise — the CLI added no code to wiki-publisher or wiki-client. Cost: a fourth artifact to release and document, and a CLI-specific paragraph in SECURITY.md’s threat model, since the original wording only covered Maven’s `-D mechanism.