| 51 | } |
| 52 | |
| 53 | func deleteRun(opts *DeleteOptions) error { |
| 54 | cfg, err := opts.Config() |
| 55 | if err != nil { |
| 56 | return err |
| 57 | } |
| 58 | |
| 59 | aliasCfg := cfg.Aliases() |
| 60 | |
| 61 | aliases := make(map[string]string) |
| 62 | if opts.All { |
| 63 | aliases = aliasCfg.All() |
| 64 | if len(aliases) == 0 { |
| 65 | return cmdutil.NewNoResultsError("no aliases configured") |
| 66 | } |
| 67 | } else { |
| 68 | expansion, err := aliasCfg.Get(opts.Name) |
| 69 | if err != nil { |
| 70 | return fmt.Errorf("no such alias %s", opts.Name) |
| 71 | } |
| 72 | aliases[opts.Name] = expansion |
| 73 | } |
| 74 | |
| 75 | for name := range aliases { |
| 76 | if err := aliasCfg.Delete(name); err != nil { |
| 77 | return fmt.Errorf("failed to delete alias %s: %w", name, err) |
| 78 | } |
| 79 | } |
| 80 | |
| 81 | if err := cfg.Write(); err != nil { |
| 82 | return err |
| 83 | } |
| 84 | |
| 85 | if opts.IO.IsStdoutTTY() { |
| 86 | cs := opts.IO.ColorScheme() |
| 87 | keys := make([]string, 0, len(aliases)) |
| 88 | for k := range aliases { |
| 89 | keys = append(keys, k) |
| 90 | } |
| 91 | sort.Strings(keys) |
| 92 | for _, k := range keys { |
| 93 | fmt.Fprintf(opts.IO.ErrOut, "%s Deleted alias %s; was %s\n", cs.SuccessIconWithColor(cs.Red), k, aliases[k]) |
| 94 | } |
| 95 | } |
| 96 | |
| 97 | return nil |
| 98 | } |