Files
MuyueWorkspace/cmd/muyue/commands/scan.go
Augustin 485e085bb0 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-23 19:47:00 +02:00

56 lines
1.3 KiB
Go

package commands
import (
"encoding/json"
"fmt"
"github.com/muyue/muyue/internal/scanner"
"github.com/spf13/cobra"
)
var scanCmd = &cobra.Command{
Use: "scan",
Short: "Run system scan and print results table",
RunE: runScan,
}
func init() {
rootCmd.AddCommand(scanCmd)
scanCmd.Flags().Bool("json", false, "Output results as JSON")
}
func runScan(cmd *cobra.Command, args []string) error {
useJSON, _ := cmd.Flags().GetBool("json")
result := scanner.ScanSystem()
if useJSON {
data, err := json.MarshalIndent(result, "", " ")
if err != nil {
return err
}
fmt.Println(string(data))
return nil
}
fmt.Printf("%-15s %-20s %-10s %-10s\n", "Tool", "Version", "Status", "Path")
fmt.Println("─────────────────────────────────────────────────")
for _, t := range result.Tools {
status := "✓ installed"
if !t.Installed {
status = "✗ missing"
}
fmt.Printf("%-15s %-20s %-10s %-10s\n", t.Name, t.Version, status, t.Path)
}
fmt.Printf("\n% d/%d tools installed\n", len(result.Tools) - countMissing(result.Tools), len(result.Tools))
return nil
}
func countMissing(tools []scanner.ToolStatus) int {
missing := 0
for _, t := range tools {
if !t.Installed {
missing++
}
}
return missing
}