package packagemanager import ( "codeberg.org/Pata1704/system_setup_tool/internal/shell" "fmt" "os" "path/filepath" ) type CargoManager struct{} func (c *CargoManager) Install(packages []string) error { if len(packages) == 0 { return nil } err := InstallWithProgress(c, packages) if err != nil { return err } return nil } func (c *CargoManager) Name() string { return "Cargo" } func (c *CargoManager) InstallManager() error { if _, err := shell.ExecLookPath("brew"); err != nil { installHomebrew() } if _, err := shell.ExecLookPath("cargo"); err == nil { return nil } cmd := shell.ExecCommand("brew", "install", "rust") return cmd.Run() } func (c *CargoManager) InstallPackage(pkg string) error { cmd := shell.ExecCommand("cargo", "install", pkg) return cmd.Run() } func (c *CargoManager) RemovePackage(pkg string) error { cmd := shell.ExecCommand("cargo", "uninstall", pkg) return cmd.Run() } func (c *CargoManager) SearchPackage(pkg string) []string { return []string{} } func (c *CargoManager) UpdatePackage(pkg string) error { return fmt.Errorf("update not supported") } func (c *CargoManager) UpdateAllPackages() error { return fmt.Errorf("update not supported") } func (c *CargoManager) Check(pkg string) error { home, err := os.UserHomeDir() if err != nil { return err } cmd := shell.ExecCommand("ls", filepath.Join(home, ".cargo", "bin", pkg)) return cmd.Run() }