feat: migrate from docopt to cobra for CLI argument parsing

Replace docopt-go with spf13/cobra, giving cheat a built-in
`--completion` flag that dynamically generates shell completions for
bash, zsh, fish, and powershell. This replaces the manually-maintained
static completion scripts and resolves the root cause of multiple
completion issues (#768, #705, #633, #632, #476).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Christopher Allen Lane
2026-02-15 17:33:47 -05:00
parent ca1ec0e38d
commit 9b92261604
119 changed files with 14204 additions and 3127 deletions

View File

@@ -0,0 +1,24 @@
package completions
import (
"fmt"
"io"
"github.com/spf13/cobra"
)
// Generate writes a shell completion script to the given writer.
func Generate(cmd *cobra.Command, shell string, w io.Writer) error {
switch shell {
case "bash":
return cmd.Root().GenBashCompletionV2(w, true)
case "zsh":
return cmd.Root().GenZshCompletion(w)
case "fish":
return cmd.Root().GenFishCompletion(w, true)
case "powershell":
return cmd.Root().GenPowerShellCompletionWithDesc(w)
default:
return fmt.Errorf("unsupported shell: %s (valid: bash, zsh, fish, powershell)", shell)
}
}