func()

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
}