github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/cmd/state/internal/cmdtree/ppm.go (about) 1 package cmdtree 2 3 import ( 4 "github.com/ActiveState/cli/internal/captain" 5 "github.com/ActiveState/cli/internal/locale" 6 "github.com/ActiveState/cli/internal/primer" 7 "github.com/ActiveState/cli/internal/runners/ppm" 8 ) 9 10 func newPpmCommand(prime *primer.Values) *captain.Command { 11 shim := ppm.NewShim(prime) 12 conversion := ppm.NewConversionFlow(prime) 13 rootCmd := captain.NewHiddenShimCommand( 14 "_ppm", 15 prime, 16 nil, nil, 17 func(_ *captain.Command, args []string) error { 18 for _, arg := range args { 19 if arg == "--version" { 20 return shim.PrintDefault() 21 } 22 } 23 converted, err := conversion.StartIfNecessary() 24 if err != nil { 25 return err 26 } 27 return shim.RunPPM(converted, args...) 28 }, 29 ) 30 31 var children []*captain.Command 32 children = addPackagesCommands(prime, children) 33 children = addRepositoryCommands(prime, children) 34 children = addProjectCommands(prime, children) 35 children = addVersionCommand(prime, children) 36 children = addInfoCommand(prime, children) 37 children = addOtherCommands(prime, children) 38 39 rootCmd.AddChildren(children...) 40 return rootCmd 41 } 42 43 func addPackagesCommands(prime *primer.Values, cmds []*captain.Command) []*captain.Command { 44 shim := ppm.NewShim(prime) 45 conversion := ppm.NewConversionFlow(prime) 46 return append(cmds, 47 captain.NewShimCommand( 48 "install", 49 "installs new packages", 50 func(_ *captain.Command, args []string) error { 51 converted, err := conversion.StartIfNecessary() 52 if err != nil { 53 return err 54 } 55 56 return shim.RunInstall(converted, args...) 57 }, 58 ), 59 captain.NewShimCommand( 60 "upgrade", 61 "upgrades installed packages", 62 func(_ *captain.Command, args []string) error { 63 converted, err := conversion.StartIfNecessary() 64 if err != nil { 65 return err 66 } 67 68 return shim.RunUpgrade(converted, args...) 69 }, 70 ), 71 captain.NewShimCommand( 72 "remove", 73 "removes installed packages", 74 func(_ *captain.Command, args []string) error { 75 converted, err := conversion.StartIfNecessary() 76 if err != nil { 77 return err 78 } 79 80 return shim.RunRemove(converted, args...) 81 }, 82 ), 83 ) 84 } 85 86 func addVersionCommand(prime *primer.Values, cmds []*captain.Command) []*captain.Command { 87 shim := ppm.NewShim(prime) 88 return append(cmds, 89 captain.NewShimCommand( 90 "version", 91 "print version info", 92 func(_ *captain.Command, _ []string) error { 93 return shim.PrintDefault() 94 }, 95 ), 96 ) 97 } 98 99 func addProjectCommands(prime *primer.Values, cmds []*captain.Command) []*captain.Command { 100 shim := ppm.NewShim(prime) 101 conversion := ppm.NewConversionFlow(prime) 102 return append(cmds, 103 captain.NewShimCommand( 104 "area", 105 "organizes packages in different areas", 106 func(_ *captain.Command, _ []string) error { 107 _, err := conversion.StartIfNecessary() 108 if err != nil { 109 return err 110 } 111 112 prime.Output().Print(locale.Tr("ppm_print_area_redundant", "state packages")) 113 return nil 114 }, 115 ), 116 captain.NewShimCommand( 117 "list", 118 "lists installed packages", 119 func(_ *captain.Command, args []string) error { 120 converted, err := conversion.StartIfNecessary() 121 if err != nil { 122 return err 123 } 124 125 return shim.RunList(converted, args...) 126 }, 127 ), 128 // Long: strings.TrimSpace(locale.T("ppm_header_message")), 129 captain.NewShimCommand( 130 "files", 131 "lists the full path name of the files belonging to the given package, one line per file.", 132 func(_ *captain.Command, _ []string) error { 133 return shim.PrintDefault() 134 }, 135 ), 136 // Long: strings.TrimSpace(locale.T("ppm_header_message")), 137 captain.NewShimCommand( 138 "verify", 139 "checks that the installed files are present and unmodified.", 140 func(_ *captain.Command, _ []string) error { 141 return shim.PrintDefault() 142 }, 143 ), 144 ) 145 } 146 147 func addRepositoryCommands(prime *primer.Values, cmds []*captain.Command) []*captain.Command { 148 shim := ppm.NewShim(prime) 149 return append(cmds, 150 // The repo sub-commands in ppm configure alternative package 151 // directories. At this point, this is an unsupported functionality, as 152 // you cannot host a private platform yet. 153 // So, I am just printing the default message. 154 // Long: strings.TrimSpace(locale.T("ppm_header_message")), 155 captain.NewShimCommand( 156 "repo", 157 "manages package repositories", 158 func(_ *captain.Command, _ []string) error { 159 return shim.PrintDefault() 160 }, 161 ), 162 captain.NewShimCommand( 163 "search", 164 "searches for packages in all enabled repositories", 165 func(_ *captain.Command, _ []string) error { 166 return shim.PrintSuggestion(locale.T("ppm_search_intent"), "state packages search", "state/packages.html") 167 }, 168 ), 169 captain.NewShimCommand( 170 "describe", 171 "shows all properties from a particular package from the last search result", 172 func(_ *captain.Command, _ []string) error { 173 return shim.PrintDefault() 174 }, 175 ), 176 captain.NewShimCommand( 177 "tree", 178 "shows all dependencies for a particular package.", 179 func(_ *captain.Command, _ []string) error { 180 return shim.PrintDefault() 181 }, 182 ), 183 ) 184 } 185 186 func addOtherCommands(prime *primer.Values, cmds []*captain.Command) []*captain.Command { 187 shim := ppm.NewShim(prime) 188 return append(cmds, 189 // The repo sub-commands in ppm configure alternative package 190 // directories. At this point, this is an unsupported functionality, as 191 // you cannot host a private platform yet. 192 // So, I am just printing the default message. 193 captain.NewShimCommand( 194 "config", 195 "configuration settings", 196 func(_ *captain.Command, _ []string) error { 197 return shim.PrintDefault() 198 }, 199 ), 200 captain.NewShimCommand( 201 "gui", 202 "opens the graphical user-interface", 203 func(_ *captain.Command, _ []string) error { 204 return shim.PrintDefault() 205 }, 206 ), 207 ) 208 } 209 210 func addInfoCommand(prime *primer.Values, cmds []*captain.Command) []*captain.Command { 211 shim := ppm.NewShim(prime) 212 return append(cmds, captain.NewShimCommand( 213 "info", 214 "prints ppm help message", 215 func(_ *captain.Command, _ []string) error { 216 return shim.PrintMain() 217 }, 218 )) 219 }