package edgebsl import ( "flag" "github.com/peterbourgon/ff/v3" "edge-infra.dev/pkg/edge/bsl" ) func NewConfig(args []string) (BslConfig, *flag.FlagSet, error) { config := BslConfig{ AccessKey: &bsl.AccessKey{}, } fs := flag.NewFlagSet("bslctl", flag.ExitOnError) fs.StringVar( &config.ActivationSubscriptionURL, "activation_subscription_url", "", "endpoint for customer activation subscription", ) fs.StringVar( &config.RootURI, "bsl_endpoint", "", "bsl endpoint for bslctl", ) fs.StringVar( &config.BslReconcilesInterval, "bsl_reconcile_interval", DefaultReconcileInterval, "reconcile interval that bslctl will be running with", ) fs.StringVar( &config.RootOrg, "bsl_root_org", "", "bsl root org", ) fs.StringVar( &config.OrgPrefix, "bsp_organization_prefix", "", "bsl organization prefix", ) fs.StringVar( &config.TopLevelProjectID, "top_level_project_id", "", "top level project ID", ) fs.StringVar(&config.AccessKey.SecretKey, "edge_bsl_secret_key", "", "secret key for access the bsl", ) fs.StringVar(&config.AccessKey.SharedKey, "edge_bsl_shared_key", "", "shared key for access the bsl", ) fs.StringVar(&config.BasicAuthCreds.Username, "edge_bsl_basic_auth_username", "", "secret key for access the bsl", ) fs.StringVar(&config.BasicAuthCreds.Password, "edge_bsl_basic_auth_password", "", "shared key for access the bsl", ) //sql config fs.StringVar(&config.SQL.ConnectionName, "sql_connection_name", config.SQL.ConnectionName, "sql connection name", ) fs.StringVar(&config.SQL.User, "sql_user", config.SQL.User, "sql db user", ) fs.StringVar(&config.SQL.DatabaseName, "sql_db_name", config.SQL.DatabaseName, "sql db name", ) fs.StringVar(&config.Mode, "mode", "release", "gin server mode", ) fs.StringVar(&config.Port, "port", "9092", "the port edge bsl server should run on", ) if err := ff.Parse(fs, args[1:], ff.WithEnvVarNoPrefix()); err != nil { return BslConfig{}, &flag.FlagSet{}, err } return config, fs, nil }