func resourceGitlabProjectSetToState()

in internal/provider/sdk/resource_gitlab_project.go [896:1018]


func resourceGitlabProjectSetToState(ctx context.Context, client *gitlab.Client, d *schema.ResourceData, project *gitlab.Project) error {
	d.SetId(fmt.Sprintf("%d", project.ID))
	d.Set("name", project.Name)
	d.Set("path", project.Path)
	d.Set("path_with_namespace", project.PathWithNamespace)
	d.Set("description", project.Description)
	d.Set("default_branch", project.DefaultBranch)
	d.Set("request_access_enabled", project.RequestAccessEnabled)
	d.Set("issues_enabled", project.IssuesEnabled)                        //nolint:staticcheck
	d.Set("merge_requests_enabled", project.MergeRequestsEnabled)         //nolint:staticcheck
	d.Set("pipelines_enabled", project.JobsEnabled)                       //nolint:staticcheck
	d.Set("approvals_before_merge", project.ApprovalsBeforeMerge)         //nolint:staticcheck
	d.Set("wiki_enabled", project.WikiEnabled)                            //nolint:staticcheck
	d.Set("snippets_enabled", project.SnippetsEnabled)                    //nolint:staticcheck
	d.Set("container_registry_enabled", project.ContainerRegistryEnabled) //nolint:staticcheck
	d.Set("lfs_enabled", project.LFSEnabled)
	d.Set("visibility_level", string(project.Visibility))
	d.Set("merge_method", string(project.MergeMethod))
	d.Set("only_allow_merge_if_pipeline_succeeds", project.OnlyAllowMergeIfPipelineSucceeds)
	d.Set("only_allow_merge_if_all_discussions_are_resolved", project.OnlyAllowMergeIfAllDiscussionsAreResolved)
	d.Set("allow_merge_on_skipped_pipeline", project.AllowMergeOnSkippedPipeline)
	d.Set("allow_pipeline_trigger_approve_deployment", project.AllowPipelineTriggerApproveDeployment)
	d.Set("restrict_user_defined_variables", project.RestrictUserDefinedVariables) //nolint:staticcheck
	d.Set("namespace_id", project.Namespace.ID)
	d.Set("ssh_url_to_repo", project.SSHURLToRepo)
	d.Set("http_url_to_repo", project.HTTPURLToRepo)
	d.Set("web_url", project.WebURL)
	d.Set("runners_token", project.RunnersToken)
	d.Set("shared_runners_enabled", project.SharedRunnersEnabled)
	d.Set("group_runners_enabled", project.GroupRunnersEnabled)
	if err := d.Set("tags", project.TagList); err != nil { //nolint:staticcheck
		return err
	}
	d.Set("empty_repo", project.EmptyRepo)
	d.Set("archived", project.Archived)
	d.Set("squash_option", project.SquashOption)
	d.Set("remove_source_branch_after_merge", project.RemoveSourceBranchAfterMerge)
	d.Set("printing_merge_request_link_enabled", project.PrintingMergeRequestLinkEnabled)
	d.Set("packages_enabled", project.PackagesEnabled)
	d.Set("pages_access_level", string(project.PagesAccessLevel))
	d.Set("mirror", project.Mirror)
	d.Set("mirror_trigger_builds", project.MirrorTriggerBuilds)
	d.Set("mirror_overwrites_diverged_branches", project.MirrorOverwritesDivergedBranches)
	d.Set("only_mirror_protected_branches", project.OnlyMirrorProtectedBranches)
	d.Set("import_url", project.ImportURL)
	d.Set("issues_template", project.IssuesTemplate)
	d.Set("merge_requests_template", project.MergeRequestsTemplate)
	d.Set("ci_config_path", project.CIConfigPath)
	if err := d.Set("ci_id_token_sub_claim_components", project.CIIdTokenSubClaimComponents); err != nil {
		return fmt.Errorf("error setting ci_id_token_sub_claim_components: %v", err)
	}
	d.Set("ci_forward_deployment_enabled", project.CIForwardDeploymentEnabled)
	d.Set("ci_separated_caches", project.CISeperateCache)
	d.Set("ci_restrict_pipeline_cancellation_role", project.CIRestrictPipelineCancellationRole)
	d.Set("ci_pipeline_variables_minimum_override_role", project.CIPipelineVariablesMinimumOverrideRole)
	d.Set("keep_latest_artifact", project.KeepLatestArtifact)
	d.Set("merge_pipelines_enabled", project.MergePipelinesEnabled)
	d.Set("merge_trains_enabled", project.MergeTrainsEnabled)
	d.Set("resolve_outdated_diff_discussions", project.ResolveOutdatedDiffDiscussions)
	d.Set("analytics_access_level", string(project.AnalyticsAccessLevel))
	d.Set("auto_cancel_pending_pipelines", project.AutoCancelPendingPipelines)
	d.Set("auto_devops_deploy_strategy", project.AutoDevopsDeployStrategy)
	d.Set("auto_devops_enabled", project.AutoDevopsEnabled)
	d.Set("autoclose_referenced_issues", project.AutocloseReferencedIssues)
	d.Set("build_git_strategy", project.BuildGitStrategy)
	d.Set("build_timeout", project.BuildTimeout)
	d.Set("builds_access_level", string(project.BuildsAccessLevel))
	if err := d.Set("container_expiration_policy", flattenContainerExpirationPolicy(project.ContainerExpirationPolicy)); err != nil {
		return fmt.Errorf("error setting container_expiration_policy: %v", err)
	}
	d.Set("container_registry_access_level", string(project.ContainerRegistryAccessLevel))
	d.Set("emails_enabled", project.EmailsEnabled)

	d.Set("external_authorization_classification_label", project.ExternalAuthorizationClassificationLabel)
	d.Set("forking_access_level", string(project.ForkingAccessLevel))
	d.Set("issues_access_level", string(project.IssuesAccessLevel))
	d.Set("merge_requests_access_level", string(project.MergeRequestsAccessLevel))

	// First, try to set the public_jobs. If it's not available, fall back to public_builds.
	// nolint:staticcheck // SA1019 ignore deprecated GetOkExists
	// lintignore: XR001 // TODO: replace with alternative for GetOkExists
	if err := d.Set("public_jobs", project.PublicJobs); err != nil {
		if err := d.Set("public_builds", project.PublicJobs); err != nil {
			return fmt.Errorf("error setting public_jobs: %v", err)
		}
	}

	d.Set("repository_access_level", string(project.RepositoryAccessLevel))
	d.Set("repository_storage", project.RepositoryStorage)
	d.Set("requirements_access_level", string(project.RequirementsAccessLevel))
	d.Set("security_and_compliance_access_level", string(project.SecurityAndComplianceAccessLevel))
	d.Set("snippets_access_level", string(project.SnippetsAccessLevel))
	d.Set("suggestion_commit_message", project.SuggestionCommitMessage)
	if err := d.Set("topics", project.Topics); err != nil {
		return fmt.Errorf("error setting topics: %v", err)
	}
	d.Set("wiki_access_level", string(project.WikiAccessLevel))
	d.Set("squash_commit_template", project.SquashCommitTemplate)
	d.Set("merge_commit_template", project.MergeCommitTemplate)
	d.Set("ci_default_git_depth", project.CIDefaultGitDepth)
	d.Set("ci_delete_pipelines_in_seconds", project.CIDeletePipelinesInSeconds)
	d.Set("avatar_url", project.AvatarURL)

	if project.ForkedFromProject != nil {
		d.Set("forked_from_project_id", project.ForkedFromProject.ID)
	} else {
		d.Set("forked_from_project_id", nil)
	}

	d.Set("mr_default_target_self", project.MergeRequestDefaultTargetSelf)

	d.Set("releases_access_level", string(project.ReleasesAccessLevel))
	d.Set("environments_access_level", string(project.EnvironmentsAccessLevel))
	d.Set("feature_flags_access_level", string(project.FeatureFlagsAccessLevel))
	d.Set("infrastructure_access_level", string(project.InfrastructureAccessLevel))
	d.Set("monitor_access_level", string(project.MonitorAccessLevel))
	d.Set("pre_receive_secret_detection_enabled", project.PreReceiveSecretDetectionEnabled)
	d.Set("model_experiments_access_level", string(project.ModelExperimentsAccessLevel))
	d.Set("model_registry_access_level", string(project.ModelRegistryAccessLevel))
	d.Set("prevent_merge_without_jira_issue", project.PreventMergeWithoutJiraIssue)

	return nil
}