Desire path: agents naturally try 'gt show <id>' to inspect beads. This wraps 'bd show' via syscall.Exec, passing all flags through. - Works with any prefix (gt-, bd-, hq-, etc.) - Routes to correct beads database automatically - DisableFlagParsing passes all flags to bd show Closes gt-82jxwx Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
58 lines
1.4 KiB
Go
58 lines
1.4 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"os/exec"
|
|
"syscall"
|
|
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
func init() {
|
|
showCmd.GroupID = GroupWork
|
|
rootCmd.AddCommand(showCmd)
|
|
}
|
|
|
|
var showCmd = &cobra.Command{
|
|
Use: "show <bead-id> [flags]",
|
|
Short: "Show details of a bead",
|
|
Long: `Displays the full details of a bead by ID.
|
|
|
|
Delegates to 'bd show' - all bd show flags are supported.
|
|
Works with any bead prefix (gt-, bd-, hq-, etc.) and routes
|
|
to the correct beads database automatically.
|
|
|
|
Examples:
|
|
gt show gt-abc123 # Show a gastown issue
|
|
gt show hq-xyz789 # Show a town-level bead (convoy, mail, etc.)
|
|
gt show bd-def456 # Show a beads issue
|
|
gt show gt-abc123 --json # Output as JSON
|
|
gt show gt-abc123 -v # Verbose output`,
|
|
DisableFlagParsing: true, // Pass all flags through to bd show
|
|
RunE: runShow,
|
|
}
|
|
|
|
func runShow(cmd *cobra.Command, args []string) error {
|
|
if len(args) == 0 {
|
|
return fmt.Errorf("bead ID required\n\nUsage: gt show <bead-id> [flags]")
|
|
}
|
|
|
|
return execBdShow(args)
|
|
}
|
|
|
|
// execBdShow replaces the current process with 'bd show'.
|
|
func execBdShow(args []string) error {
|
|
bdPath, err := exec.LookPath("bd")
|
|
if err != nil {
|
|
return fmt.Errorf("bd not found in PATH: %w", err)
|
|
}
|
|
|
|
// Build args: bd show <all-args>
|
|
// argv[0] must be the program name for exec
|
|
fullArgs := append([]string{"bd", "show"}, args...)
|
|
|
|
// Replace process with bd show
|
|
return syscall.Exec(bdPath, fullArgs, os.Environ())
|
|
}
|