func flattenProjects()

in internal/provider/sdk/data_source_gitlab_projects.go [107:219]


func flattenProjects(projects []*gitlab.Project) (values []map[string]any) {
	for _, project := range projects {
		v := map[string]any{
			"id":                                project.ID,
			"description":                       project.Description,
			"default_branch":                    project.DefaultBranch,
			"visibility":                        string(project.Visibility),
			"ssh_url_to_repo":                   project.SSHURLToRepo,
			"http_url_to_repo":                  project.HTTPURLToRepo,
			"web_url":                           project.WebURL,
			"readme_url":                        project.ReadmeURL,
			"tag_list":                          project.TagList, //nolint:staticcheck
			"owner":                             flattenGitlabBasicUser(project.Owner),
			"name":                              project.Name,
			"name_with_namespace":               project.NameWithNamespace,
			"path":                              project.Path,
			"path_with_namespace":               project.PathWithNamespace,
			"issues_enabled":                    project.IssuesEnabled, //nolint:staticcheck
			"open_issues_count":                 project.OpenIssuesCount,
			"merge_requests_enabled":            project.MergeRequestsEnabled, //nolint:staticcheck
			"approvals_before_merge":            project.ApprovalsBeforeMerge, //nolint:staticcheck
			"jobs_enabled":                      project.JobsEnabled,          //nolint:staticcheck
			"wiki_enabled":                      project.WikiEnabled,          //nolint:staticcheck
			"snippets_enabled":                  project.SnippetsEnabled,      //nolint:staticcheck
			"resolve_outdated_diff_discussions": project.ResolveOutdatedDiffDiscussions,
			"container_registry_enabled":        project.ContainerRegistryEnabled, //nolint:staticcheck
			"created_at":                        project.CreatedAt.String(),
			"last_activity_at":                  project.LastActivityAt.String(),
			"creator_id":                        project.CreatorID,
			"namespace":                         flattenProjectNamespace(project.Namespace),
			"import_status":                     project.ImportStatus,
			"import_error":                      project.ImportError,
			"permissions":                       flattenProjectPermissions(project.Permissions),
			"empty_repo":                        project.EmptyRepo,
			"archived":                          project.Archived,
			"avatar_url":                        project.AvatarURL,
			"shared_runners_enabled":            project.SharedRunnersEnabled,
			"group_runners_enabled":             project.GroupRunnersEnabled,
			"forks_count":                       project.ForksCount,
			"star_count":                        project.StarCount,
			"runners_token":                     project.RunnersToken,

			// Map PublicJobs -> PublicBuilds until we have a breaking version
			"public_builds":                                    project.PublicJobs,
			"only_allow_merge_if_pipeline_succeeds":            project.OnlyAllowMergeIfPipelineSucceeds,
			"only_allow_merge_if_all_discussions_are_resolved": project.OnlyAllowMergeIfAllDiscussionsAreResolved,
			"allow_merge_on_skipped_pipeline":                  project.AllowMergeOnSkippedPipeline,
			"allow_pipeline_trigger_approve_deployment":        project.AllowPipelineTriggerApproveDeployment,
			"restrict_user_defined_variables":                  project.RestrictUserDefinedVariables, //nolint:staticcheck
			"lfs_enabled":                                      project.LFSEnabled,
			"request_access_enabled":                           project.RequestAccessEnabled,
			"merge_method":                                     project.MergeMethod,
			"forked_from_project":                              flattenForkedFromProject(project.ForkedFromProject),
			"import_url":                                       project.ImportURL,
			"keep_latest_artifact":                             project.KeepLatestArtifact,
			"mirror":                                           project.Mirror,
			"mirror_user_id":                                   project.MirrorUserID,
			"mirror_trigger_builds":                            project.MirrorTriggerBuilds,
			"only_mirror_protected_branches":                   project.OnlyMirrorProtectedBranches,
			"mirror_overwrites_diverged_branches":              project.MirrorOverwritesDivergedBranches,
			"shared_with_groups":                               flattenSharedWithGroupsOptions(project),
			"statistics":                                       project.Statistics,
			"_links":                                           flattenProjectLinks(project.Links),
			"ci_config_path":                                   project.CIConfigPath,
			"custom_attributes":                                project.CustomAttributes,
			"packages_enabled":                                 project.PackagesEnabled,
			"build_coverage_regex":                             project.BuildCoverageRegex,
			"ci_forward_deployment_enabled":                    project.CIForwardDeploymentEnabled,
			"ci_id_token_sub_claim_components":                 project.CIIdTokenSubClaimComponents,
			"merge_pipelines_enabled":                          project.MergePipelinesEnabled,
			"merge_trains_enabled":                             project.MergeTrainsEnabled,
			"analytics_access_level":                           string(project.AnalyticsAccessLevel),
			"auto_cancel_pending_pipelines":                    project.AutoCancelPendingPipelines,
			"auto_devops_deploy_strategy":                      project.AutoDevopsDeployStrategy,
			"auto_devops_enabled":                              project.AutoDevopsEnabled,
			"autoclose_referenced_issues":                      project.AutocloseReferencedIssues,
			"build_git_strategy":                               project.BuildGitStrategy,
			"build_timeout":                                    project.BuildTimeout,
			"builds_access_level":                              string(project.BuildsAccessLevel),
			"container_expiration_policy":                      flattenContainerExpirationPolicy(project.ContainerExpirationPolicy),
			"container_registry_access_level":                  string(project.ContainerRegistryAccessLevel),
			"external_authorization_classification_label":      project.ExternalAuthorizationClassificationLabel,
			"forking_access_level":                             string(project.ForkingAccessLevel),
			"issues_access_level":                              string(project.IssuesAccessLevel),
			"merge_requests_access_level":                      string(project.MergeRequestsAccessLevel),
			"repository_access_level":                          string(project.RepositoryAccessLevel),
			"repository_storage":                               project.RepositoryStorage,
			"requirements_access_level":                        string(project.RequirementsAccessLevel),
			"security_and_compliance_access_level":             string(project.SecurityAndComplianceAccessLevel),
			"snippets_access_level":                            string(project.SnippetsAccessLevel),
			"suggestion_commit_message":                        project.SuggestionCommitMessage,
			"topics":                                           project.Topics,
			"wiki_access_level":                                string(project.WikiAccessLevel),
			"squash_commit_template":                           project.SquashCommitTemplate,
			"merge_commit_template":                            project.MergeCommitTemplate,
			"ci_default_git_depth":                             project.CIDefaultGitDepth,
			"ci_delete_pipelines_in_seconds":                   project.CIDeletePipelinesInSeconds,
			"releases_access_level":                            string(project.ReleasesAccessLevel),
			"environments_access_level":                        string(project.EnvironmentsAccessLevel),
			"feature_flags_access_level":                       string(project.FeatureFlagsAccessLevel),
			"infrastructure_access_level":                      string(project.InfrastructureAccessLevel),
			"monitor_access_level":                             string(project.MonitorAccessLevel),
			"ci_restrict_pipeline_cancellation_role":           string(project.CIRestrictPipelineCancellationRole),
			"ci_pipeline_variables_minimum_override_role":      string(project.CIPipelineVariablesMinimumOverrideRole),
			"emails_enabled":                                   project.EmailsEnabled,
			"model_experiments_access_level":                   string(project.ModelExperimentsAccessLevel),
			"model_registry_access_level":                      string(project.ModelRegistryAccessLevel),
			"prevent_merge_without_jira_issue":                 project.PreventMergeWithoutJiraIssue,
		}
		values = append(values, v)
	}
	return values
}