feat(deps): Auto-install beads (bd) when missing (GHI #22)

- Add internal/deps package for dependency management
- Check for bd before gt install and gt rig add
- Auto-install bd via go install if missing
- Version check warns if bd is too old (min: 0.43.0)

Closes #22

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
mayor
2026-01-02 12:23:55 -08:00
committed by Steve Yegge
parent 3093bf40ac
commit f3b7640563
4 changed files with 221 additions and 0 deletions

View File

@@ -11,6 +11,7 @@ import (
"github.com/spf13/cobra"
"github.com/steveyegge/gastown/internal/config"
"github.com/steveyegge/gastown/internal/deps"
"github.com/steveyegge/gastown/internal/style"
"github.com/steveyegge/gastown/internal/templates"
"github.com/steveyegge/gastown/internal/workspace"
@@ -105,6 +106,13 @@ func runInstall(cmd *cobra.Command, args []string) error {
style.PrintWarning("Creating HQ inside existing workspace at %s", existingRoot)
}
// Ensure beads (bd) is available before proceeding
if !installNoBeads {
if err := deps.EnsureBeads(true); err != nil {
return fmt.Errorf("beads dependency check failed: %w", err)
}
}
fmt.Printf("%s Creating Gas Town HQ at %s\n\n",
style.Bold.Render("🏭"), style.Dim.Render(absPath))

View File

@@ -11,6 +11,7 @@ import (
"github.com/spf13/cobra"
"github.com/steveyegge/gastown/internal/beads"
"github.com/steveyegge/gastown/internal/config"
"github.com/steveyegge/gastown/internal/deps"
"github.com/steveyegge/gastown/internal/git"
"github.com/steveyegge/gastown/internal/polecat"
"github.com/steveyegge/gastown/internal/refinery"
@@ -193,6 +194,11 @@ func runRigAdd(cmd *cobra.Command, args []string) error {
name := args[0]
gitURL := args[1]
// Ensure beads (bd) is available before proceeding
if err := deps.EnsureBeads(true); err != nil {
return fmt.Errorf("beads dependency check failed: %w", err)
}
// Find workspace
townRoot, err := workspace.FindFromCwdOrError()
if err != nil {