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
}