class Cult::Role
Attributes
path[RW]
project[RW]
Public Class Methods
all(project)
click to toggle source
# File lib/cult/role.rb, line 163 def self.all(project) fail if block_given? all_files(project).map do |filename| new(project, filename) end.select(&:exist?).to_named_array end
all_files(project)
click to toggle source
# File lib/cult/role.rb, line 156 def self.all_files(project) Dir.glob(File.join(path(project), "*")).select do |file| Dir.exist?(file) end end
by_name(project, name)
click to toggle source
# File lib/cult/role.rb, line 146 def self.by_name(project, name) new(project, File.join(path(project), name)) end
delegate_to_definition(method_name, definition_key = nil)
click to toggle source
# File lib/cult/role.rb, line 7 def self.delegate_to_definition(method_name, definition_key = nil) definition_key ||= method_name define_method(method_name) do definition[definition_key.to_s] end end
new(project, path)
click to toggle source
# File lib/cult/role.rb, line 19 def initialize(project, path) @project = project @path = path end
path(project)
click to toggle source
# File lib/cult/role.rb, line 151 def self.path(project) File.join(project.path, "roles") end
Public Instance Methods
==(rhs)
click to toggle source
# File lib/cult/role.rb, line 66 def ==(rhs) [self.class, project, path] == [rhs.class, rhs.project, rhs.path] end
Also aliased as: eql?
artifacts()
click to toggle source
# File lib/cult/role.rb, line 87 def artifacts Artifact.all_for_role(project, self) end
Also aliased as: files
build_order()
click to toggle source
# File lib/cult/role.rb, line 171 def build_order all_items = [self] + parent_roles each_node = ->(&block) { all_items.each(&block) } each_child = ->(node, &block) { node.parent_roles.each(&block) } TSort.tsort(each_node, each_child).to_named_array end
build_tasks()
click to toggle source
# File lib/cult/role.rb, line 77 def build_tasks tasks.select { |t| t.is_a?(Cult::BuildTask) } end
collection_name()
click to toggle source
# File lib/cult/role.rb, line 38 def collection_name class_name = self.class.name.split('::')[-1] class_name.downcase + 's' end
definition()
click to toggle source
# File lib/cult/role.rb, line 96 def definition @definition ||= Definition.new(self) end
definition_parameters()
click to toggle source
# File lib/cult/role.rb, line 107 def definition_parameters { project: project, role: self } end
definition_parents()
click to toggle source
# File lib/cult/role.rb, line 112 def definition_parents parent_roles end
definition_path()
click to toggle source
# File lib/cult/role.rb, line 101 def definition_path [ File.join(path, "extra.json"), role_file ] end
event_tasks()
click to toggle source
# File lib/cult/role.rb, line 82 def event_tasks tasks.select { |t| t.is_a?(Cult::EventTask) } end
exist?()
click to toggle source
# File lib/cult/role.rb, line 28 def exist? Dir.exist?(path) end
has_role?(role)
click to toggle source
# File lib/cult/role.rb, line 186 def has_role?(role) ! tree[role].nil? end
hash()
click to toggle source
# File lib/cult/role.rb, line 61 def hash [self.class, project, path].hash end
includes()
click to toggle source
# File lib/cult/role.rb, line 117 def includes definition.direct('includes') || ['base'] end
inspect()
click to toggle source
# File lib/cult/role.rb, line 55 def inspect "\#<#{self.class.name} id:#{object_id.to_s(36)} #{name.inspect}>" end
Also aliased as: to_s
name()
click to toggle source
# File lib/cult/role.rb, line 33 def name File.basename(path) end
names_for_role(*a)
click to toggle source
# File lib/cult/role.rb, line 190 def names_for_role(*a) build_order.map(&:name) end
names_for_task()
click to toggle source
# File lib/cult/role.rb, line 198 def names_for_task tasks.map(&:name) end
node?()
click to toggle source
# File lib/cult/role.rb, line 24 def node? false end
parent_roles()
click to toggle source
# File lib/cult/role.rb, line 122 def parent_roles Array(includes).map do |name| Role.by_name(project, name) end.to_named_array end
query_for_role()
click to toggle source
# File lib/cult/role.rb, line 194 def query_for_role build_order end
recursive_parent_roles(seen = [])
click to toggle source
# File lib/cult/role.rb, line 129 def recursive_parent_roles(seen = []) result = [] parent_roles.each do |role| next if seen.include?(role) seen.push(role) result.push(role) result += role.recursive_parent_roles(seen) end result.to_named_array end
relative_path(obj_path)
click to toggle source
# File lib/cult/role.rb, line 49 def relative_path(obj_path) fail unless obj_path.start_with?(path) obj_path[path.size + 1 .. -1] end
remote_path()
click to toggle source
# File lib/cult/role.rb, line 44 def remote_path File.join(project.remote_path, collection_name, name) end
role_file()
click to toggle source
# File lib/cult/role.rb, line 92 def role_file File.join(path, "role.json") end
tasks()
click to toggle source
# File lib/cult/role.rb, line 72 def tasks Task.all_for_role(project, self) end
tree()
click to toggle source
# File lib/cult/role.rb, line 141 def tree ([self] + recursive_parent_roles).to_named_array end