projects_helpers.rb 6.06 KB
Newer Older
1 2
# frozen_string_literal: true

3 4 5 6
module API
  module Helpers
    module ProjectsHelpers
      extend ActiveSupport::Concern
7
      extend Grape::API::Helpers
8

9 10
      params :optional_project_params_ce do
        optional :description, type: String, desc: 'The description of the project'
11
        optional :build_git_strategy, type: String, values: %w(fetch clone), desc: 'The Git strategy. Defaults to `fetch`'
12
        optional :build_timeout, type: Integer, desc: 'Build timeout'
13
        optional :auto_cancel_pending_pipelines, type: String, values: %w(disabled enabled), desc: 'Auto-cancel pending pipelines'
14
        optional :build_coverage_regex, type: String, desc: 'Test coverage parsing'
15
        optional :ci_config_path, type: String, desc: 'The path to CI config file. Defaults to `.gitlab-ci.yml`'
16 17

        # TODO: remove in API v5, replaced by *_access_level
18 19 20 21 22
        optional :issues_enabled, type: Boolean, desc: 'Flag indication if the issue tracker is enabled'
        optional :merge_requests_enabled, type: Boolean, desc: 'Flag indication if merge requests are enabled'
        optional :wiki_enabled, type: Boolean, desc: 'Flag indication if the wiki is enabled'
        optional :jobs_enabled, type: Boolean, desc: 'Flag indication if jobs are enabled'
        optional :snippets_enabled, type: Boolean, desc: 'Flag indication if snippets are enabled'
23 24 25 26 27 28 29 30

        optional :issues_access_level, type: String, values: %w(disabled private enabled), desc: 'Issues access level. One of `disabled`, `private` or `enabled`'
        optional :repository_access_level, type: String, values: %w(disabled private enabled), desc: 'Repository access level. One of `disabled`, `private` or `enabled`'
        optional :merge_requests_access_level, type: String, values: %w(disabled private enabled), desc: 'Merge requests access level. One of `disabled`, `private` or `enabled`'
        optional :wiki_access_level, type: String, values: %w(disabled private enabled), desc: 'Wiki access level. One of `disabled`, `private` or `enabled`'
        optional :builds_access_level, type: String, values: %w(disabled private enabled), desc: 'Builds access level. One of `disabled`, `private` or `enabled`'
        optional :snippets_access_level, type: String, values: %w(disabled private enabled), desc: 'Snippets access level. One of `disabled`, `private` or `enabled`'

31 32 33 34 35 36 37 38 39 40
        optional :shared_runners_enabled, type: Boolean, desc: 'Flag indication if shared runners are enabled for that project'
        optional :resolve_outdated_diff_discussions, type: Boolean, desc: 'Automatically resolve merge request diffs discussions on lines changed with a push'
        optional :container_registry_enabled, type: Boolean, desc: 'Flag indication if the container registry is enabled for that project'
        optional :lfs_enabled, type: Boolean, desc: 'Flag indication if Git LFS is enabled for that project'
        optional :visibility, type: String, values: Gitlab::VisibilityLevel.string_values, desc: 'The visibility of the project.'
        optional :public_builds, type: Boolean, desc: 'Perform public builds'
        optional :request_access_enabled, type: Boolean, desc: 'Allow users to request member access'
        optional :only_allow_merge_if_pipeline_succeeds, type: Boolean, desc: 'Only allow to merge if builds succeed'
        optional :only_allow_merge_if_all_discussions_are_resolved, type: Boolean, desc: 'Only allow to merge if all discussions are resolved'
        optional :tag_list, type: Array[String], desc: 'The list of tags for a project'
41 42
        # TODO: remove rubocop disable - https://gitlab.com/gitlab-org/gitlab-ee/issues/14960
        optional :avatar, type: File, desc: 'Avatar image for project' # rubocop:disable Scalability/FileUploads
43 44 45
        optional :printing_merge_request_link_enabled, type: Boolean, desc: 'Show link to create/view merge request when pushing from the command line'
        optional :merge_method, type: String, values: %w(ff rebase_merge merge), desc: 'The merge method used when merging merge requests'
        optional :initialize_with_readme, type: Boolean, desc: "Initialize a project with a README.md"
46
        optional :ci_default_git_depth, type: Integer, desc: 'Default number of revisions for shallow cloning'
47 48
        optional :auto_devops_enabled, type: Boolean, desc: 'Flag indication if Auto DevOps is enabled'
        optional :auto_devops_deploy_strategy, type: String, values: %w(continuous manual timed_incremental), desc: 'Auto Deploy strategy'
49 50 51 52
      end

      params :optional_project_params_ee do
      end
53

54 55 56 57 58 59 60
      params :optional_project_params do
        use :optional_project_params_ce
        use :optional_project_params_ee
      end

      params :optional_filter_params_ee do
      end
61

62
      params :optional_update_params_ee do
63
      end
64 65 66

      def self.update_params_at_least_one_of
        [
67 68
          :auto_devops_enabled,
          :auto_devops_deploy_strategy,
69
          :auto_cancel_pending_pipelines,
70
          :build_coverage_regex,
71
          :build_git_strategy,
72
          :build_timeout,
73
          :builds_access_level,
74
          :ci_config_path,
75
          :ci_default_git_depth,
76 77 78
          :container_registry_enabled,
          :default_branch,
          :description,
79
          :issues_access_level,
80
          :lfs_enabled,
81
          :merge_requests_access_level,
82 83 84 85 86 87 88
          :merge_method,
          :name,
          :only_allow_merge_if_all_discussions_are_resolved,
          :only_allow_merge_if_pipeline_succeeds,
          :path,
          :printing_merge_request_link_enabled,
          :public_builds,
89
          :repository_access_level,
90
          :request_access_enabled,
91
          :resolve_outdated_diff_discussions,
92
          :shared_runners_enabled,
93
          :snippets_access_level,
94 95
          :tag_list,
          :visibility,
96
          :wiki_access_level,
97
          :avatar,
98 99 100 101 102 103 104 105

          # TODO: remove in API v5, replaced by *_access_level
          :issues_enabled,
          :jobs_enabled,
          :merge_requests_enabled,
          :wiki_enabled,
          :jobs_enabled,
          :snippets_enabled
106 107
        ]
      end
108 109 110

      def filter_attributes_using_license!(attrs)
      end
111 112 113
    end
  end
end