diff --git a/pkg/config/config.go b/pkg/config/config.go index 013fc2df893747ff7d7250bdee3880a31a7a07ff..49a04971606efe6de645a574b48b1e19e01ce5c3 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -39,6 +39,7 @@ type Config struct { DownloadPlugins bool ShowProgress bool AllowMaintainedVersionOnDefaultBranch bool + PluginResolver string } func mustGetString(cmd *cobra.Command, name string) string { @@ -130,6 +131,7 @@ func NewConfig(cmd *cobra.Command) (*Config, error) { DownloadPlugins: mustGetBool(cmd, "download-plugins"), ShowProgress: mustGetBool(cmd, "show-progress"), AllowMaintainedVersionOnDefaultBranch: mustGetBool(cmd, "allow-maintained-version-on-default-branch"), + PluginResolver: viper.GetString("pluginResolver"), } return conf, nil } @@ -187,6 +189,7 @@ func SetFlags(cmd *cobra.Command) { cmd.Flags().Bool("show-progress", false, "shows the plugin download progress") cmd.Flags().String("config", "", "config file (default is .semrelrc)") cmd.Flags().Bool("allow-maintained-version-on-default-branch", false, "allow configuring the maintained version on the default branch") + cmd.Flags().String("plugin-resolver", "registry", "which resolver should be used to resolve plugins (registry or github)") cmd.Flags().SortFlags = true must(viper.BindPFlag("maintainedVersion", cmd.Flags().Lookup("maintained-version"))) @@ -198,6 +201,9 @@ func SetFlags(cmd *cobra.Command) { must(viper.BindPFlag("plugins.changelog-generator.name", cmd.Flags().Lookup("changelog-generator"))) must(viper.BindPFlag("plugins.files-updater.names", cmd.Flags().Lookup("files-updater"))) must(viper.BindPFlag("plugins.hooks.names", cmd.Flags().Lookup("hooks"))) + + must(viper.BindPFlag("pluginResolver", cmd.Flags().Lookup("plugin-resolver"))) + must(viper.BindEnv("pluginResolver", "SEMREL_PLUGIN_RESOLVER")) } func InitConfig(cmd *cobra.Command) error { diff --git a/pkg/plugin/discovery/discovery.go b/pkg/plugin/discovery/discovery.go index db9f9eab5d51fe1d3a863e430b468d92e4aafcf8..6ddf072090c95fc6c38d7ebca2f171207768b3cb 100644 --- a/pkg/plugin/discovery/discovery.go +++ b/pkg/plugin/discovery/discovery.go @@ -38,7 +38,11 @@ func New(config *config.Config) (*Discovery, error) { return nil, err } // use the registry resolver as default - resolvers["default"] = resolvers["registry"] + resolvers["default"] = resolvers[config.PluginResolver] + + if resolvers["default"] == nil { + return nil, fmt.Errorf("resolver %s does not exist", config.PluginResolver) + } return &Discovery{ config: config,