Skip to content

Parse namespaced/single-space/arg-gapped entries; add 5 CLIs + ~40 fixtures - #7

Merged
syumai merged 2 commits into
mainfrom
devin/1790054686-help-coverage-round6
Sep 22, 2026
Merged

syumai merged 2 commits into
mainfrom
devin/1790054686-help-coverage-round6

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

Summary

More parser coverage plus the largest fixture batch yet: 5 new CLIs (tofu, istioctl, pack, supabase, firebase) and ~45 nested fixtures, all ok in testdata/help/manifest.tsv. Also a licensing fix: sops and tofu are MPL-2.0 (file-level copyleft), so their fixtures are hand-written synthetics, not verbatim captures.

Parser changes in internal/helptext/parse.go:

  • looksLikeSubPath(n) — namespaced a:b names are valid in pipe-separated alias lists, so firebase's mcp|experimental:mcp entry parses instead of flushing the whole Commands section.
  • relaxedEntry — inside a known commands section only, accept name + single space + CapitalizedDesc. Needed for cobra layouts where an overlong name overflows the padded column (istioctl create-remote-secret Create a secret ...).
  • prefixedEntry now runs skipArgs(rest) before giving up, so wrangler d1 create <name> Creates ... collects the group (wrangler d1 went 3 → 9 entries).
  • skipArgs no longer bails when j == 0 after a multi-word bracket group ([<job-id | job-name>]) consumed its trailing separator space (glab retry, trigger, view were dropped).
  • A deeper-indented bare single token ( directory wrapping a firebase description) is absorbed into the previous entry's description instead of becoming a bogus entry.
  • Qualifying prefix groups (≥2 same-prefix names) now merge alongside section results rather than only when sections are empty — a single stray section entry (build in yarn) no longer suppresses the yarn-prefixed group.

New manifest rows (~48): root rows for tofu/istioctl/pack/supabase/firebase plus nested doctl apps|kubernetes, argocd app|proj, glab mr|ci|release|issue|repo|auth, pulumi stack|config|plugin, flux create|get|reconcile, eksctl create|get, minikube addons|image, vercel env|teams, wrangler kv|r2|d1|pages, netlify env|functions, railway environment, hatch env|dep, pdm venv|python, meson wrap, rye toolchain|tools, stripe customers, hcloud server, supabase functions, firebase emulators. New captured fixtures are all permissively licensed and listed in testdata/help/NOTICE.md, which now also states the policy explicitly treats MPL like GPL (synthetic only).

Link to Devin session: https://app.devin.ai/sessions/6b27c26293e1466cb4b3f495d9cf77ea
Open in Devin Desktop: https://app.devin.ai/desktop/session/6b27c26293e1466cb4b3f495d9cf77ea?variant=devin
Requested by: @syumai

…xtures

- pipe-separated aliases may be namespaced (firebase mcp|experimental:mcp)
- single-space name/desc separator inside known sections (istioctl
  create-remote-secret overflowing the cobra name column)
- prefixed entries skip placeholder args before the desc gap
  (wrangler d1 create <name>   Creates ...)
- skipArgs no longer bails after multi-word bracket groups consumed
  their trailing space (glab ci retry [<job-id | job-name>])
- deeper-indented bare tokens merge into the previous description
  instead of becoming entries
- new captured CLIs: tofu, istioctl, pack, supabase, firebase (+NOTICE)
- ~40 new nested fixture rows (doctl apps/kubernetes, argocd app/proj,
  glab mr/ci/release/issue/repo/auth, pulumi stack/config/plugin,
  flux create/get/reconcile, eksctl create/get, minikube addons/image,
  vercel env/teams, wrangler kv/r2/d1/pages, netlify env/functions,
  railway environment, hatch env/dep, pdm venv/python, meson wrap,
  rye toolchain/tools, stripe customers, hcloud server,
  supabase functions, firebase emulators)

Co-Authored-By: syumai <syumai@gmail.com>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".

  • Disable automatic comment, CI, and merge conflict monitoring

…ures

MPL-2.0 is file-level copyleft — weaker than GPL but still copyleft —
so verbatim help output should not be committed. Both CLIs now use
hand-written fixtures in the same format, like the GPL/LGPL/Artistic
entries. NOTICE.md updated: sops and tofu moved to the synthetic
table and the policy text now names MPL explicitly.

Co-Authored-By: syumai <syumai@gmail.com>
@syumai
syumai merged commit 9f2d44f into main Sep 22, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant