github.com/buildpacks/pack@v0.33.3-0.20240516162812-884dd1837311/internal/commands/config.go (about)

     1  package commands
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/spf13/cobra"
     7  
     8  	"github.com/buildpacks/pack/internal/config"
     9  	"github.com/buildpacks/pack/pkg/logging"
    10  )
    11  
    12  func NewConfigCommand(logger logging.Logger, cfg config.Config, cfgPath string, client PackClient) *cobra.Command {
    13  	cmd := &cobra.Command{
    14  		Use:   "config",
    15  		Short: "Interact with your local pack config file",
    16  		RunE:  nil,
    17  	}
    18  
    19  	cmd.AddCommand(ConfigDefaultBuilder(logger, cfg, cfgPath, client))
    20  	cmd.AddCommand(ConfigExperimental(logger, cfg, cfgPath))
    21  	cmd.AddCommand(ConfigPullPolicy(logger, cfg, cfgPath))
    22  	cmd.AddCommand(ConfigRegistries(logger, cfg, cfgPath))
    23  	cmd.AddCommand(ConfigRunImagesMirrors(logger, cfg, cfgPath))
    24  	cmd.AddCommand(ConfigTrustedBuilder(logger, cfg, cfgPath))
    25  	cmd.AddCommand(ConfigLifecycleImage(logger, cfg, cfgPath))
    26  	cmd.AddCommand(ConfigRegistryMirrors(logger, cfg, cfgPath))
    27  
    28  	AddHelpFlag(cmd, "config")
    29  	return cmd
    30  }
    31  
    32  type editCfgFunc func(args []string, logger logging.Logger, cfg config.Config, cfgPath string) error
    33  
    34  func generateAdd(cmdName string, logger logging.Logger, cfg config.Config, cfgPath string, addFunc editCfgFunc) *cobra.Command {
    35  	cmd := &cobra.Command{
    36  		Use:   "add",
    37  		Args:  cobra.ExactArgs(1),
    38  		Short: fmt.Sprintf("Add a %s", cmdName),
    39  		RunE: logError(logger, func(cmd *cobra.Command, args []string) error {
    40  			return addFunc(args, logger, cfg, cfgPath)
    41  		}),
    42  	}
    43  
    44  	return cmd
    45  }
    46  
    47  func generateRemove(cmdName string, logger logging.Logger, cfg config.Config, cfgPath string, rmFunc editCfgFunc) *cobra.Command {
    48  	cmd := &cobra.Command{
    49  		Use:   "remove",
    50  		Args:  cobra.ExactArgs(1),
    51  		Short: fmt.Sprintf("Remove a %s", cmdName),
    52  		RunE: logError(logger, func(cmd *cobra.Command, args []string) error {
    53  			return rmFunc(args, logger, cfg, cfgPath)
    54  		}),
    55  	}
    56  
    57  	return cmd
    58  }
    59  
    60  type listFunc func(args []string, logger logging.Logger, cfg config.Config)
    61  
    62  func generateListCmd(cmdName string, logger logging.Logger, cfg config.Config, listFunc listFunc) *cobra.Command {
    63  	cmd := &cobra.Command{
    64  		Use:   "list",
    65  		Args:  cobra.MaximumNArgs(1),
    66  		Short: fmt.Sprintf("List %s", cmdName),
    67  		RunE: logError(logger, func(cmd *cobra.Command, args []string) error {
    68  			listFunc(args, logger, cfg)
    69  			return nil
    70  		}),
    71  	}
    72  
    73  	return cmd
    74  }