execute performs the main logic for package removal.
(args []string)
| 61 | |
| 62 | // execute performs the main logic for package removal. |
| 63 | func (r *removeCmd) execute(args []string) error { |
| 64 | // Validate and normalize input arguments first. |
| 65 | nameVersions, err := r.validatePackageNames(args) |
| 66 | if err != nil { |
| 67 | return fmt.Errorf("invalid package names -> %w", err) |
| 68 | } |
| 69 | |
| 70 | // Initialize celer |
| 71 | if err := r.celer.Init(); err != nil { |
| 72 | return fmt.Errorf("failed to initialize celer -> %w", err) |
| 73 | } |
| 74 | |
| 75 | // Remove packages. |
| 76 | if err := r.removePackages(nameVersions); err != nil { |
| 77 | return fmt.Errorf("failed to remove packages -> %w", err) |
| 78 | } |
| 79 | |
| 80 | // Print success message. |
| 81 | color.PrintSuccess("Successfully removed %s", strings.Join(nameVersions, ", ")) |
| 82 | return nil |
| 83 | } |
| 84 | |
| 85 | func (r *removeCmd) validatePackageNames(nameVersions []string) ([]string, error) { |
| 86 | regex := regexp.MustCompile(`^[a-zA-Z0-9_-]+@[a-zA-Z0-9._-]+$`) |