diff options
author | James Fargher <proglottis@gmail.com> | 2019-07-18 14:50:00 +1200 |
---|---|---|
committer | James Fargher <proglottis@gmail.com> | 2019-07-18 15:41:19 +1200 |
commit | 2a4645525ef8eab45053b6e32761c5071c450e56 (patch) | |
tree | 0acb6f0f5127c35ddfe6c4ba9d209ddcc41ac969 | |
parent | 34f5eb1b93b5c1e7d8ed8d578d8b94cd33d2dca3 (diff) | |
download | gitlab-ce-refactor_auto_devops_enabled.tar.gz |
Extract auto-devops configuration calculationsrefactor_auto_devops_enabled
-rw-r--r-- | app/models/project.rb | 24 | ||||
-rw-r--r-- | app/services/projects/auto_devops/config_service.rb | 39 |
2 files changed, 44 insertions, 19 deletions
diff --git a/app/models/project.rb b/app/models/project.rb index 2906aca75fc..68b2d5cfbf2 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -662,29 +662,15 @@ class Project < ApplicationRecord alias_method :lfs_enabled, :lfs_enabled? def auto_devops_enabled? - if auto_devops&.enabled.nil? - has_auto_devops_implicitly_enabled? - else - auto_devops.enabled? - end + Projects::AutoDevops::ConfigService.new(self).auto_devops_enabled? end def has_auto_devops_implicitly_enabled? - auto_devops_config = first_auto_devops_config - - auto_devops_config[:scope] != :project && auto_devops_config[:status] + Projects::AutoDevops::ConfigService.new(self).has_auto_devops_implicitly_enabled? end def has_auto_devops_implicitly_disabled? - auto_devops_config = first_auto_devops_config - - auto_devops_config[:scope] != :project && !auto_devops_config[:status] - end - - def first_auto_devops_config - return namespace.first_auto_devops_config if auto_devops&.enabled.nil? - - { scope: :project, status: auto_devops&.enabled || Feature.enabled?(:force_autodevops_on_by_default, self) } + Projects::AutoDevops::ConfigService.new(self).has_auto_devops_implicitly_disabled? end def daily_statistics_enabled? @@ -1776,7 +1762,7 @@ class Project < ApplicationRecord end def has_ci? - repository.gitlab_ci_yml || auto_devops_enabled? + repository.gitlab_ci_yml || Projects::AutoDevops::ConfigService.new(self).auto_devops_enabled? # TODO end def predefined_variables @@ -1863,7 +1849,7 @@ class Project < ApplicationRecord end def auto_devops_variables - return [] unless auto_devops_enabled? + return [] unless Projects::AutoDevops::ConfigService.new(self).auto_devops_enabled? # TODO (auto_devops || build_auto_devops)&.predefined_variables end diff --git a/app/services/projects/auto_devops/config_service.rb b/app/services/projects/auto_devops/config_service.rb new file mode 100644 index 00000000000..638038d908e --- /dev/null +++ b/app/services/projects/auto_devops/config_service.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +module Projects + module AutoDevops + class ConfigService < BaseService + def auto_devops_enabled? + if project.auto_devops&.enabled.nil? + project.has_auto_devops_implicitly_enabled? + else + project.auto_devops.enabled? + end + end + + def has_auto_devops_implicitly_enabled? + auto_devops_config = first_auto_devops_config + + auto_devops_config[:scope] != :project && auto_devops_config[:status] + end + + def has_auto_devops_implicitly_disabled? + auto_devops_config = first_auto_devops_config + + auto_devops_config[:scope] != :project && !auto_devops_config[:status] + end + + private + + def first_auto_devops_config + return project.namespace.first_auto_devops_config if project.auto_devops&.enabled.nil? + + { scope: :project, status: project.auto_devops&.enabled || force_autodevops_on_by_default? } + end + + def force_autodevops_on_by_default? + Feature.enabled?(:force_autodevops_on_by_default, project) + end + end + end +end |