feat: polecat remove accepts just name when in rig context

parseAddress now infers rig from cwd when no slash in address.
Makes 'gt polecat remove slit' work from within gastown/.
This commit is contained in:
Steve Yegge
2025-12-28 02:17:09 -08:00
parent b6f1e32dfd
commit 60176bd9f1
+16 -3
View File
@@ -182,12 +182,25 @@ func init() {
} }
// parseAddress parses "rig/polecat" format. // parseAddress parses "rig/polecat" format.
// If no "/" is present, attempts to infer rig from current directory.
func parseAddress(addr string) (rigName, polecatName string, err error) { func parseAddress(addr string) (rigName, polecatName string, err error) {
parts := strings.SplitN(addr, "/", 2) parts := strings.SplitN(addr, "/", 2)
if len(parts) != 2 || parts[0] == "" || parts[1] == "" { if len(parts) == 2 && parts[0] != "" && parts[1] != "" {
return "", "", fmt.Errorf("invalid address format: expected 'rig/polecat', got '%s'", addr) return parts[0], parts[1], nil
} }
return parts[0], parts[1], nil
// No slash - try to infer rig from cwd
if !strings.Contains(addr, "/") && addr != "" {
townRoot, err := workspace.FindFromCwd()
if err == nil && townRoot != "" {
inferredRig, err := inferRigFromCwd(townRoot)
if err == nil && inferredRig != "" {
return inferredRig, addr, nil
}
}
}
return "", "", fmt.Errorf("invalid address format: expected 'rig/polecat', got '%s'", addr)
} }
// getSessionManager creates a session manager for the given rig. // getSessionManager creates a session manager for the given rig.