gitlab-org--gitlab-foss/lib/gitlab/ci/status/factory.rb

53 lines
1.2 KiB
Ruby
Raw Normal View History

2016-12-07 07:14:45 -05:00
module Gitlab
module Ci
module Status
class Factory
def initialize(subject, user)
2016-12-07 07:14:45 -05:00
@subject = subject
@user = user
@status = subject.status || HasStatus::DEFAULT_STATUS
2016-12-07 07:14:45 -05:00
end
def fabricate!
if extended_statuses.none?
2016-12-07 07:14:45 -05:00
core_status
else
compound_extended_status
2016-12-07 07:14:45 -05:00
end
end
def core_status
Gitlab::Ci::Status
.const_get(@status.capitalize)
.new(@subject, @user)
.extend(self.class.common_helpers)
2016-12-07 07:14:45 -05:00
end
def compound_extended_status
extended_statuses.inject(core_status) do |status, extended|
extended.new(status)
end
end
def extended_statuses
return @extended_statuses if defined?(@extended_statuses)
groups = self.class.extended_statuses.map do |group|
Array(group).find { |status| status.matches?(@subject, @user) }
2016-12-07 07:14:45 -05:00
end
@extended_statuses = groups.flatten.compact
2016-12-07 07:14:45 -05:00
end
def self.extended_statuses
[]
end
def self.common_helpers
Module.new
end
2016-12-07 07:14:45 -05:00
end
end
end
end