Create internal/constants/constants.go with centralized definitions for: - Directory names (mayor, polecats, crew, etc.) - File names (rigs.json, town.json, state.json) - Git branch names (main, beads-sync) - Tmux session names (gt-mayor, gt-deacon) - Agent role names Add helper functions for common path construction: - MayorRigsPath(), MayorTownPath(), MayorStatePath() - RigMayorPath(), RigBeadsPath(), RigPolecatsPath() Update key files to use the new constants: - internal/cmd/rig_helpers.go - internal/cmd/status.go - internal/daemon/daemon.go Closes: gt-xnql 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/steveyegge/gastown/internal/config"
|
|
"github.com/steveyegge/gastown/internal/constants"
|
|
"github.com/steveyegge/gastown/internal/git"
|
|
"github.com/steveyegge/gastown/internal/rig"
|
|
"github.com/steveyegge/gastown/internal/workspace"
|
|
)
|
|
|
|
// getRig finds the town root and retrieves the specified rig.
|
|
// This is the common boilerplate extracted from get*Manager functions.
|
|
// Returns the town root path and rig instance.
|
|
func getRig(rigName string) (string, *rig.Rig, error) {
|
|
townRoot, err := workspace.FindFromCwdOrError()
|
|
if err != nil {
|
|
return "", nil, fmt.Errorf("not in a Gas Town workspace: %w", err)
|
|
}
|
|
|
|
rigsConfigPath := constants.MayorRigsPath(townRoot)
|
|
rigsConfig, err := config.LoadRigsConfig(rigsConfigPath)
|
|
if err != nil {
|
|
rigsConfig = &config.RigsConfig{Rigs: make(map[string]config.RigEntry)}
|
|
}
|
|
|
|
g := git.NewGit(townRoot)
|
|
rigMgr := rig.NewManager(townRoot, rigsConfig, g)
|
|
r, err := rigMgr.GetRig(rigName)
|
|
if err != nil {
|
|
return "", nil, fmt.Errorf("rig '%s' not found", rigName)
|
|
}
|
|
|
|
return townRoot, r, nil
|
|
}
|