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:       &params.Commit,
    26  			},
    27  			{
    28  				Name:        "package",
    29  				Description: locale.T("package_list_flag_name_description"),
    30  				Value:       &params.Name,
    31  			},
    32  			{
    33  				Name:        "namespace",
    34  				Description: locale.T("namespace_list_flag_project_description"),
    35  				Value:       &params.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:       &params.Timestamp,
    67  			},
    68  			{
    69  				Name:        "revision",
    70  				Shorthand:   "r",
    71  				Description: locale.T("package_flag_rev_description"),
    72  				Value:       &params.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:       &params.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:       &params.Language,
   178  			},
   179  			{
   180  				Name:        "exact-term",
   181  				Description: locale.T("package_search_flag_exact-term_description"),
   182  				Value:       &params.ExactTerm,
   183  			},
   184  			{
   185  				Name:        "ts",
   186  				Description: locale.T("package_flag_ts_description"),
   187  				Value:       &params.Timestamp,
   188  			},
   189  		},
   190  		[]*captain.Argument{
   191  			{
   192  				Name:        locale.T("package_arg_name"),
   193  				Description: locale.T("package_arg_name_description"),
   194  				Value:       &params.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:       &params.Language,
   219  			},
   220  			{
   221  				Name:        "ts",
   222  				Description: locale.T("package_flag_ts_description"),
   223  				Value:       &params.Timestamp,
   224  			},
   225  		},
   226  		[]*captain.Argument{
   227  			{
   228  				Name:        locale.T("package_arg_nameversion"),
   229  				Description: locale.T("package_arg_nameversion_description"),
   230  				Value:       &params.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  }