Files
MuyueWorkspace/cmd/muyue/commands/install.go
Augustin 2e50366cd8
All checks were successful
Beta Release / beta (push) Successful in 2m24s
feat: add Cobra CLI, LSP/MCP registries, workflow engine, and enriched dashboard
Major changes:
- Refactor CLI entry point to Cobra commands (root, setup, scan, doctor, install, update, lsp, mcp, skills, config, version)
- Add LSP registry with health checks, auto-install, and editor config generation
- Add MCP registry with editor detection, status tracking, and per-editor configuration
- Add workflow engine with planner and step execution for automated task chains
- Add conversation search, export (Markdown/JSON), and detailed token counting
- Add streaming shell chat handler with tool call/result events
- Add skill validation, dry-run testing, and export endpoints
- Enrich dashboard with Tools/Activity/Status tabs and tool cards grid
- Add PRD documentation
- Complete i18n for both EN and FR

💘 Generated with Crush

Assisted-by: GLM-5.1 via Crush <crush@charm.land>
2026-04-22 22:22:05 +02:00

56 lines
1.1 KiB
Go

package commands
import (
"fmt"
"github.com/muyue/muyue/internal/installer"
"github.com/muyue/muyue/internal/scanner"
"github.com/spf13/cobra"
)
var installCmd = &cobra.Command{
Use: "install [tool]",
Short: "Install missing tools",
Args: cobra.RangeArgs(0, 1),
RunE: runInstall,
}
var installYes bool
func init() {
rootCmd.AddCommand(installCmd)
installCmd.Flags().BoolVar(&installYes, "yes", false, "Skip confirmation")
}
func runInstall(cmd *cobra.Command, args []string) error {
var tools []string
if len(args) > 0 {
tools = args
}
inst := installer.New(nil)
if len(tools) == 0 {
result := scanner.ScanSystem()
for _, t := range result.Tools {
if !t.Installed {
tools = append(tools, t.Name)
}
}
if len(tools) == 0 {
fmt.Println("All tools already installed!")
return nil
}
fmt.Printf("Installing missing tools: %v\n", tools)
}
for _, tool := range tools {
fmt.Printf("Installing %s...\n", tool)
res := inst.InstallTool(tool)
if res.Success {
fmt.Printf("✓ %s: %s\n", tool, res.Message)
} else {
fmt.Printf("✗ %s: %s\n", tool, res.Message)
}
}
return nil
}