github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/cmd/state/internal/cmdtree/packages.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/packages" 8 "github.com/ActiveState/cli/pkg/platform/model" 9 ) 10 11 func newPackagesCommand(prime *primer.Values) *captain.Command { 12 runner := packages.NewList(prime) 13 14 params := packages.ListRunParams{} 15 16 cmd := captain.NewCommand( 17 "packages", 18 locale.Tl("package_title", "Listing Packages"), 19 locale.T("package_cmd_description"), 20 prime, 21 []*captain.Flag{ 22 { 23 Name: "commit", 24 Description: locale.T("package_list_flag_commit_description"), 25 Value: ¶ms.Commit, 26 }, 27 { 28 Name: "package", 29 Description: locale.T("package_list_flag_name_description"), 30 Value: ¶ms.Name, 31 }, 32 { 33 Name: "namespace", 34 Description: locale.T("namespace_list_flag_project_description"), 35 Value: ¶ms.Project, 36 }, 37 }, 38 []*captain.Argument{}, 39 func(_ *captain.Command, _ []string) error { 40 return runner.Run(params, model.NamespacePackage) 41 }, 42 ) 43 44 cmd.SetGroup(PackagesGroup) 45 cmd.SetAliases("pkg", "package") 46 cmd.SetSupportsStructuredOutput() 47 48 return cmd 49 } 50 51 func newInstallCommand(prime *primer.Values) *captain.Command { 52 runner := packages.NewInstall(prime) 53 54 params := packages.InstallRunParams{} 55 56 var packagesRaw string 57 cmd := captain.NewCommand( 58 "install", 59 locale.Tl("package_install_title", "Installing Package"), 60 locale.T("package_install_cmd_description"), 61 prime, 62 []*captain.Flag{ 63 { 64 Name: "ts", 65 Description: locale.T("package_flag_ts_description"), 66 Value: ¶ms.Timestamp, 67 }, 68 { 69 Name: "revision", 70 Shorthand: "r", 71 Description: locale.T("package_flag_rev_description"), 72 Value: ¶ms.Revision, 73 }, 74 }, 75 []*captain.Argument{ 76 { 77 Name: locale.T("package_arg_nameversion"), 78 Description: locale.T("package_arg_nameversion_wildcard_description"), 79 Value: &packagesRaw, 80 Required: true, 81 }, 82 }, 83 func(_ *captain.Command, args []string) error { 84 for _, p := range args { 85 if err := params.Packages.Set(p); err != nil { 86 return locale.WrapInputError(err, "err_install_packages_args", "Invalid package install arguments") 87 } 88 } 89 return runner.Run(params, model.NamespacePackage) 90 }, 91 ) 92 93 cmd.SetGroup(PackagesGroup) 94 cmd.SetSupportsStructuredOutput() 95 cmd.SetHasVariableArguments() 96 97 return cmd 98 } 99 100 func newUninstallCommand(prime *primer.Values) *captain.Command { 101 runner := packages.NewUninstall(prime) 102 103 params := packages.UninstallRunParams{} 104 105 var packagesRaw string 106 cmd := captain.NewCommand( 107 "uninstall", 108 locale.Tl("package_uninstall_title", "Uninstalling Package"), 109 locale.T("package_uninstall_cmd_description"), 110 prime, 111 []*captain.Flag{}, 112 []*captain.Argument{ 113 { 114 Name: locale.T("package_arg_name"), 115 Description: locale.T("package_arg_name_description"), 116 Value: &packagesRaw, 117 Required: true, 118 }, 119 }, 120 func(_ *captain.Command, args []string) error { 121 for _, p := range args { 122 if err := params.Packages.Set(p); err != nil { 123 return locale.WrapInputError(err, "err_uninstall_packages_args", "Invalid package uninstall arguments") 124 } 125 } 126 return runner.Run(params, model.NamespacePackage) 127 }, 128 ) 129 130 cmd.SetGroup(PackagesGroup) 131 cmd.SetSupportsStructuredOutput() 132 cmd.SetHasVariableArguments() 133 134 return cmd 135 } 136 137 func newImportCommand(prime *primer.Values, globals *globalOptions) *captain.Command { 138 runner := packages.NewImport(prime) 139 140 params := packages.NewImportRunParams() 141 142 return captain.NewCommand( 143 "import", 144 locale.Tl("package_import_title", "Importing Packages"), 145 locale.T("package_import_cmd_description"), 146 prime, 147 []*captain.Flag{}, 148 []*captain.Argument{ 149 { 150 Name: locale.Tl("import_file", "File"), 151 Description: locale.T("package_import_flag_filename_description"), 152 Value: ¶ms.FileName, 153 Required: true, 154 }, 155 }, 156 func(_ *captain.Command, _ []string) error { 157 params.NonInteractive = globals.NonInteractive 158 return runner.Run(params) 159 }, 160 ).SetGroup(PackagesGroup).SetSupportsStructuredOutput() 161 } 162 163 func newSearchCommand(prime *primer.Values) *captain.Command { 164 runner := packages.NewSearch(prime) 165 166 params := packages.SearchRunParams{} 167 168 return captain.NewCommand( 169 "search", 170 "", 171 locale.T("package_search_cmd_description"), 172 prime, 173 []*captain.Flag{ 174 { 175 Name: "language", 176 Description: locale.T("package_search_flag_language_description"), 177 Value: ¶ms.Language, 178 }, 179 { 180 Name: "exact-term", 181 Description: locale.T("package_search_flag_exact-term_description"), 182 Value: ¶ms.ExactTerm, 183 }, 184 { 185 Name: "ts", 186 Description: locale.T("package_flag_ts_description"), 187 Value: ¶ms.Timestamp, 188 }, 189 }, 190 []*captain.Argument{ 191 { 192 Name: locale.T("package_arg_name"), 193 Description: locale.T("package_arg_name_description"), 194 Value: ¶ms.Ingredient, 195 Required: true, 196 }, 197 }, 198 func(_ *captain.Command, _ []string) error { 199 return runner.Run(params, model.NamespacePackage) 200 }, 201 ).SetGroup(PackagesGroup).SetSupportsStructuredOutput().SetUnstable(true) 202 } 203 204 func newInfoCommand(prime *primer.Values) *captain.Command { 205 runner := packages.NewInfo(prime) 206 207 params := packages.InfoRunParams{} 208 209 return captain.NewCommand( 210 "info", 211 "", 212 locale.T("package_info_cmd_description"), 213 prime, 214 []*captain.Flag{ 215 { 216 Name: "language", 217 Description: locale.T("package_info_flag_language_description"), 218 Value: ¶ms.Language, 219 }, 220 { 221 Name: "ts", 222 Description: locale.T("package_flag_ts_description"), 223 Value: ¶ms.Timestamp, 224 }, 225 }, 226 []*captain.Argument{ 227 { 228 Name: locale.T("package_arg_nameversion"), 229 Description: locale.T("package_arg_nameversion_description"), 230 Value: ¶ms.Package, 231 Required: true, 232 }, 233 }, 234 func(_ *captain.Command, _ []string) error { 235 return runner.Run(params, model.NamespacePackage) 236 }, 237 ).SetGroup(PackagesGroup).SetSupportsStructuredOutput() 238 }