in pkg/rbeconfigsgen/options.go [224:292]
func (o *Options) Validate() error {
if o.BazelVersion == "" {
v, err := latestBazelVersion()
if err != nil {
return fmt.Errorf("BazelVersion wasn't specified and was unable to determine the latest available Bazel version: %w", err)
}
o.BazelVersion = v
}
if o.ToolchainContainer == "" {
return fmt.Errorf("ToolchainContainer was not specified")
}
if o.ExecOS == "" {
return fmt.Errorf("ExecOS was not specified")
}
if !strListContains(validOS, o.ExecOS) {
return fmt.Errorf("invalid exec_os, got %q, want one of %s", o.ExecOS, strings.Join(validOS, ", "))
}
if o.TargetOS == "" {
return fmt.Errorf("TargetOS was not specified")
}
if !strListContains(validOS, o.TargetOS) {
return fmt.Errorf("invalid TargetOS, got %q, want one of %s", o.TargetOS, strings.Join(validOS, ", "))
}
if o.OutputTarball == "" && o.OutputSourceRoot == "" {
return fmt.Errorf("atleast one of OutputTarball or OutputSourceRoot must be specified or this tool won't generate any output")
}
if o.OutputSourceRoot == "" && o.OutputConfigPath != "" {
return fmt.Errorf("OutputSourceRoot is required because OutputConfigPath was specified")
}
if path.IsAbs(o.OutputConfigPath) {
return fmt.Errorf("OutputConfigPath should be a relative path")
}
if o.PlatformParams == nil {
return fmt.Errorf("PlatformParams was not initialized")
}
if !o.GenCPPConfigs && !o.GenJavaConfigs {
return fmt.Errorf("both GenCPPConfigs & GenJavaConfigs were set to false which means there's no configs to generate")
}
if o.GenCPPConfigs && len(o.CPPConfigTargets) == 0 {
return fmt.Errorf("GenCPPConfigs was true but CppConfigTargets was not specified")
}
if o.GenCPPConfigs && len(o.CppBazelCmd) == 0 {
return fmt.Errorf("GenCPPConfigs was true but CppBazelCmd was not specified")
}
if len(o.CppGenEnv) != 0 && len(o.CppGenEnvJSON) != 0 {
return fmt.Errorf("only one of CppGenEnv=%v or CppGenEnvJSON=%q must be specified", o.CppGenEnv, o.CppGenEnvJSON)
}
log.Printf("rbeconfigsgen.Options:")
log.Printf("BazelVersion=%q", o.BazelVersion)
log.Printf("ToolchainContainer=%q", o.ToolchainContainer)
log.Printf("ExecOS=%q", o.ExecOS)
log.Printf("TargetOS=%q", o.TargetOS)
log.Printf("OutputTarball=%q", o.OutputTarball)
log.Printf("OutputSourceRoot=%q", o.OutputSourceRoot)
log.Printf("OutputConfigPath=%q", o.OutputConfigPath)
log.Printf("OutputManifest=%q", o.OutputManifest)
log.Printf("PlatformParams=%v", *o.PlatformParams)
log.Printf("GenCPPConfigs=%v", o.GenCPPConfigs)
log.Printf("CPPConfigTargets=%v", o.CPPConfigTargets)
log.Printf("CPPConfigRepo=%q", o.CPPConfigRepo)
log.Printf("CppBazelCmd=%q", o.CppBazelCmd)
log.Printf("CppGenEnv=%v", o.CppGenEnv)
log.Printf("CppGenEnvJSON=%q", o.CppGenEnvJSON)
log.Printf("GenJavaConfigs=%v", o.GenJavaConfigs)
log.Printf("JavaUseLocalRuntime=%v", o.JavaUseLocalRuntime)
log.Printf("TempWorkDir=%q", o.TempWorkDir)
log.Printf("Cleanup=%v", o.Cleanup)
return nil
}