github.com/buildpacks/pack@v0.33.3-0.20240516162812-884dd1837311/internal/commands/config_registries_default.go (about) 1 package commands 2 3 import ( 4 "fmt" 5 6 "github.com/pkg/errors" 7 "github.com/spf13/cobra" 8 9 "github.com/buildpacks/pack/internal/config" 10 "github.com/buildpacks/pack/internal/style" 11 "github.com/buildpacks/pack/pkg/logging" 12 ) 13 14 func ConfigRegistriesDefault(logger logging.Logger, cfg config.Config, cfgPath string) *cobra.Command { 15 var unset bool 16 17 cmd := &cobra.Command{ 18 Use: "default <name>", 19 Args: cobra.MaximumNArgs(1), 20 Short: "Set default registry", 21 Example: "pack config registries default myregistry", 22 Long: bpRegistryExplanation + "\n\nYou can use this command to list, set, and unset a default registry, which will be used when looking for buildpacks:" + 23 "* To list your default registry, run `pack config registries default`.\n" + 24 "* To set your default registry, run `pack config registries default <registry-name>`.\n" + 25 "* To unset your default registry, run `pack config registries default --unset`.\n" + 26 fmt.Sprintf("Unsetting the default registry will reset the default-registry to be the official buildpacks registry, %s", style.Symbol(config.DefaultRegistry().URL)), 27 RunE: logError(logger, func(cmd *cobra.Command, args []string) error { 28 switch { 29 case unset: 30 if cfg.DefaultRegistryName == "" || cfg.DefaultRegistryName == config.OfficialRegistryName { 31 return errors.Errorf("Registry %s is a protected registry, and can be replaced as a default registry, but not removed entirely. "+ 32 "To add a new registry and set as default, run `pack config registries add <registry-name> <registry-url> --default.\n"+ 33 "To set an existing registry as default, call `pack config registries default <registry-name>`", style.Symbol(config.OfficialRegistryName)) 34 } 35 oldRegistry := cfg.DefaultRegistryName 36 cfg.DefaultRegistryName = "" 37 if err := config.Write(cfg, cfgPath); err != nil { 38 return errors.Wrapf(err, "writing config to %s", cfgPath) 39 } 40 logger.Infof("Successfully unset default registry %s", style.Symbol(oldRegistry)) 41 logger.Infof("Default registry has been set to %s", style.Symbol(config.OfficialRegistryName)) 42 case len(args) == 0: // list 43 if cfg.DefaultRegistryName == "" { 44 cfg.DefaultRegistryName = config.OfficialRegistryName 45 } 46 logger.Infof("The current default registry is %s", style.Symbol(cfg.DefaultRegistryName)) 47 default: // set 48 registryName := args[0] 49 if !registriesContains(config.GetRegistries(cfg), registryName) { 50 return errors.Errorf("no registry with the name %s exists", style.Symbol(registryName)) 51 } 52 53 if cfg.DefaultRegistryName != registryName { 54 cfg.DefaultRegistryName = registryName 55 err := config.Write(cfg, cfgPath) 56 if err != nil { 57 return errors.Wrapf(err, "writing config to %s", cfgPath) 58 } 59 } 60 61 logger.Infof("Successfully set %s as the default registry", style.Symbol(registryName)) 62 } 63 64 return nil 65 }), 66 } 67 68 cmd.Flags().BoolVarP(&unset, "unset", "u", false, "Unset the current default registry, and set it to the official buildpacks registry") 69 AddHelpFlag(cmd, "default") 70 return cmd 71 }