code: func ForPlugin(name string, opts ...Option) PluginConfig {
  	opt := options{
  		FlagName:    FlagName(name),
  		FlagDefault: Filename(name),
  		FlagUsage: fmt.Sprintf("Location of the %q plugin config file; can also be set via %q env variable.",
  			name, EnvVar(name)),
  		flagSet: flag.NewFlagSet(name, flag.ExitOnError),
  	}
  	for _, o := range opts {
  		o(&opt)
  	}
  
  	if opt.FlagName != "" && opt.flagSet.Lookup(opt.FlagName) == nil {
  		opt.flagSet.String(opt.FlagName, opt.FlagDefault, opt.FlagUsage)
  	}
  
  	pluginFlags[name] = opt.flagSet
  
  	return &pluginConfig{
  		configFlag: opt.FlagName,
  	}
  }
docs: // ForPlugin returns API that is injectable to a particular Plugin
  // and is used to read it's configuration.
  //
  // By default it tries to lookup `<plugin-name> + "-config"`in flags and declare
  // the flag if it's not defined yet. There are options that can be used
  // to customize the config flag for plugin and/or define additional flags for the plugin.