func determineParams()

in custom-targets/git-ops/git-deployer/params.go [102:196]


func determineParams() (*params, error) {
	params := &params{}
	// Required parameters:
	repo := os.Getenv(gitRepoEnvKey)
	if len(repo) == 0 {
		return nil, fmt.Errorf("parameter %q is required", gitRepoEnvKey)
	}
	params.gitRepo = repo

	secret := os.Getenv(gitSecretEnvKey)
	if len(secret) == 0 {
		return nil, fmt.Errorf("parameter %q is required", gitSecretEnvKey)
	}
	params.gitSecret = secret

	srcBranch := os.Getenv(gitSourceBranchEnvKey)
	if len(srcBranch) == 0 {
		return nil, fmt.Errorf("parameter %q is required", gitSourceBranchEnvKey)
	}
	params.gitSourceBranch = srcBranch

	// Optional parameters:
	params.gitPath = os.Getenv(gitPathEnvKey)
	params.gitUsername = os.Getenv(gitUsernameEnvKey)
	if len(params.gitUsername) == 0 {
		params.gitUsername = defaultUsername
	}
	params.gitEmail = os.Getenv(gitEmailEnvKey)
	params.gitCommitMessage = os.Getenv(gitCommitMessageEnvKey)
	params.gitDestinationBranch = os.Getenv(gitDestinationBranchEnvKey)
	params.gitPullRequestTitle = os.Getenv(gitPullRequestTitleEnvKey)
	params.gitPullRequestBody = os.Getenv(gitPullRequestBodyEnvKey)

	enablePRMerge := false
	prm, ok := os.LookupEnv(gitEnablePullRequestMergeEnvKey)
	if ok {
		var err error
		enablePRMerge, err = strconv.ParseBool(prm)
		if err != nil {
			return nil, fmt.Errorf("failed to parse parameter %q: %v", gitEnablePullRequestMergeEnvKey, err)
		}
	}
	params.enablePullRequestMerge = enablePRMerge

	enableSync := false
	es, ok := os.LookupEnv(gitEnableArgoSyncPollEnvKey)
	if ok {
		var err error
		enableSync, err = strconv.ParseBool(es)
		if err != nil {
			return nil, fmt.Errorf("failed to parse parameter %q: %v", gitEnableArgoSyncPollEnvKey, err)
		}
	}
	params.enableArgoSyncPoll = enableSync

	if enableSync {
		// The pull request needs to be merged in order to poll the Argo Application status.
		if !enablePRMerge {
			return nil, fmt.Errorf("parameter %q must be true when Argo sync polling is enabled", gitEnablePullRequestMergeEnvKey)
		}

		// If Argo sync is enabled then some additional parameters become required:
		gkeCluster := os.Getenv(gitGKEClusterEnvKey)
		if len(gkeCluster) == 0 {
			return nil, fmt.Errorf("parameter %q is required when Argo sync polling is enabled", gitGKEClusterEnvKey)
		}
		params.gkeCluster = gkeCluster

		argoApp := os.Getenv(gitArgoAppEnvKey)
		if len(argoApp) == 0 {
			return nil, fmt.Errorf("parameter %q is required when Argo sync polling is enabled", gitArgoAppEnvKey)
		}
		params.argoApp = argoApp

		argoNamespace := os.Getenv(gitArgoNamespaceEnvKey)
		if len(argoNamespace) == 0 {
			return nil, fmt.Errorf("parameter %q is required when Argo sync polling is enabled", gitArgoNamespaceEnvKey)
		}
		params.argoNamespace = argoNamespace

		// Optional Argo sync parameters:
		syncTimeout := defaultSyncTimeout
		st := os.Getenv(gitArgoSyncTimeoutEnvKey)
		if len(st) != 0 {
			var err error
			syncTimeout, err = time.ParseDuration(st)
			if err != nil {
				return nil, fmt.Errorf("failed to parse parameter %q: %v", gitArgoSyncTimeoutEnvKey, err)
			}
		}
		params.argoSyncTimeout = syncTimeout
	}

	return params, nil
}