in tools/mc2bq/main.go [39:141]
func parseFlags(params *export.Params, argv []string) (cliAction, error) {
var schemaPath string
var fs flag.FlagSet
params.DatasetID = os.Getenv("MC2BQ_DATASET")
params.TablePrefix = os.Getenv("MC2BQ_TABLE_PREFIX")
// set default region
defaultRegion := "us-central1"
if gcloudRegion := os.Getenv("REGION"); gcloudRegion != "" {
defaultRegion = gcloudRegion
}
if gcloudRegion := os.Getenv("MC2BQ_REGION"); gcloudRegion != "" {
defaultRegion = gcloudRegion
}
// set default project from env
params.ProjectID = os.Getenv("PROJECT")
if projectFromEnv := os.Getenv("MC2BQ_PROJECT"); projectFromEnv != "" {
params.ProjectID = projectFromEnv
}
fs.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage: %s [FLAGS...] <PROJECT> <DATASET> [TABLE-PREFIX]\n", os.Args[0])
fmt.Fprintln(os.Stderr, messages.ExportCmdDescription.String())
fmt.Fprintln(os.Stderr, "")
fs.PrintDefaults()
}
fs.StringVar(
¶ms.TargetProjectID,
"target-project",
"",
messages.ParamDescriptionTargetProject.String())
fs.StringVar(
¶ms.Region,
"region",
defaultRegion,
messages.ParamDescriptionRegion.String())
fs.BoolVar(
¶ms.Force,
"force",
false,
messages.ParamDescriptionForce.String(),
)
fs.StringVar(
&schemaPath,
"schema-path",
"",
messages.ParamDescriptionSchemaPath.String(),
)
var versionFlag bool
fs.BoolVar(&versionFlag, "version", false, messages.ParamDescriptionVersion.String())
var dumpEmbeddedSchemaFlag bool
fs.BoolVar(&dumpEmbeddedSchemaFlag, "dump-embedded-schema", false, messages.ParamDescriptionDumpSchema.String())
err := fs.Parse(argv)
if err != nil {
return actionInvalid, err
}
// Keep right after parse so we ignore all other validations
if versionFlag {
return actionVersion, nil
}
// Keep right after version flag check so we ignore all other validations
if dumpEmbeddedSchemaFlag {
return actionDumpSchema, nil
}
args := fs.Args()
if len(args) > 0 {
params.ProjectID = fs.Arg(0)
}
if len(args) > 1 {
params.DatasetID = fs.Arg(1)
}
if len(args) > 2 {
params.TablePrefix = fs.Arg(2)
}
params.Force = params.Force || os.Getenv("MC2BQ_FORCE") != ""
if params.ProjectID == "" || params.DatasetID == "" {
fs.Usage()
return actionExitFailure, nil
}
if params.TargetProjectID == "" {
params.TargetProjectID = os.Getenv("MC2BQ_TARGET_PROJECT")
}
if params.TargetProjectID == "" {
params.TargetProjectID = params.ProjectID
}
if schemaPath == "" {
schemaPath = os.Getenv("MC2BQ_SCHEMA_PATH")
}
params.Schema, err = loadSchemas(schemaPath)
if err != nil {
return actionInvalid, err
}
return actionExport, nil
}