Class: Pangea::Entities::Project
- Defined in:
- lib/pangea/entities/project.rb
Instance Method Summary collapse
- #full_name ⇒ Object
- #has_dependencies? ⇒ Boolean
- #has_modules? ⇒ Boolean
- #module_config(module_name) ⇒ Object
- #state_key ⇒ Object
- #to_backend_config(prefix: nil) ⇒ Object
- #validate! ⇒ Object
Instance Method Details
#full_name ⇒ Object
35 36 37 |
# File 'lib/pangea/entities/project.rb', line 35 def full_name [namespace, site, name].compact.join('.') end |
#has_dependencies? ⇒ Boolean
50 51 52 |
# File 'lib/pangea/entities/project.rb', line 50 def has_dependencies? !depends_on.empty? end |
#has_modules? ⇒ 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_key ⇒ Object
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
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 |