Skip to content

feat(cmd): remove fang, add explicit man subcommand and plain cobra execution#169

Merged
asphaltbuffet merged 4 commits into
mainfrom
remove-fang
May 28, 2026
Merged

feat(cmd): remove fang, add explicit man subcommand and plain cobra execution#169
asphaltbuffet merged 4 commits into
mainfrom
remove-fang

Conversation

@asphaltbuffet
Copy link
Copy Markdown
Owner

Closes #164
Closes #165
Closes #166
Closes #167

Summary

Removes charmbracelet/fang and replaces its four useful behaviors with explicit project-owned code, as specified in #164.

Changes

cmd/man (new package) — closes #165

  • NewManCmd() — hidden cobra subcommand, no args, writes roff man page content to stdout via mango-cobra + roff
  • Registered in GetRootCmd() alongside existing subcommands

cmd/root.gocloses #166

  • GetRootCmd() now sets SilenceUsage, SilenceErrors, and Version directly on the root command
  • Execute() calls root.ExecuteContext(ctx) directly; on error renders a single styled line to stderr via OutputWriter.Error()
  • fang import removed

Dependency cleanup — closes #167

  • github.com/charmbracelet/fang removed from go.mod
  • github.com/muesli/mango-cobra and github.com/muesli/roff promoted from indirect to direct deps
  • Fang's unique transitive deps (colorprofile, ultraviolet, charmbracelet/x/*) pruned from go.sum

Testing

  • cmd/man: hidden flag, no-args enforcement, non-empty roff output to stdout
  • cmd/root: SilenceUsage, SilenceErrors, Version asserted on root command; man added to TestGetRootCmd_HasSubcommands
  • mise run dev pipeline passes end-to-end (generate → lint → test → snapshot → mock)

Closes #165

- Add cmd/man package with NewManCmd() constructor
- Wire into GetRootCmd() alongside existing subcommands
- Promote mango-cobra and roff to direct dependencies
- Update TestGetRootCmd_HasSubcommands to assert man is registered
…utput

Closes #166

- Set SilenceUsage, SilenceErrors, Version on root command in GetRootCmd
- Execute() calls root.ExecuteContext directly; renders errors via OutputWriter
- Remove fang import and drop fang/charmtone from go.mod
…off to direct

Closes #167

All acceptance criteria already satisfied by #166 (fang removed from go.mod,
mango-cobra/roff promoted to direct deps, mod-tidy pruned transitive charmbracelet deps).
Remove stale fang reference from main.go comment.
@asphaltbuffet asphaltbuffet merged commit 2c0a835 into main May 28, 2026
6 checks passed
@asphaltbuffet asphaltbuffet deleted the remove-fang branch May 28, 2026 18:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant