Class: Pangea::Entities::Project

Inherits:
Dry::Struct
  • Object
show all
Defined in:
lib/pangea/entities/project.rb

Instance Method Summary collapse

Instance Method Details

#full_nameObject



35
36
37
# File 'lib/pangea/entities/project.rb', line 35

def full_name
  [namespace, site, name].compact.join('.')
end

#has_dependencies?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/pangea/entities/project.rb', line 50

def has_dependencies?
  !depends_on.empty?
end

#has_modules?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/pangea/entities/project.rb', line 46

def has_modules?
  !modules.empty?
end

#module_config(module_name) ⇒ Object



54
55
56
# File 'lib/pangea/entities/project.rb', line 54

def module_config(module_name)
  modules.find { |m| m == module_name }
end

#state_keyObject



39
40
41
42
43
44
# File 'lib/pangea/entities/project.rb', line 39

def state_key
  parts = [namespace]
  parts << site if site
  parts << name
  parts.join('/')
end

#to_backend_config(prefix: nil) ⇒ Object



58
59
60
61
62
63
64
# File 'lib/pangea/entities/project.rb', line 58

def to_backend_config(prefix: nil)
  key_parts = [prefix, state_key].compact
  {
    key: key_parts.join('/'),
    workspace_key_prefix: "workspaces"
  }
end

#validate!Object

Raises:



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/pangea/entities/project.rb', line 66

def validate!
  errors = []

  if depends_on.include?(name)
    errors << "Project cannot depend on itself"
  end

  modules.each do |mod|
    unless mod.match?(/\A[a-z][a-z0-9_-]*\z/)
      errors << "Invalid module name: #{mod}"
    end
  end

  raise ValidationError, errors.join(", ") unless errors.empty?
  true
end