Module: Foobara::Monorepo

Defined in:
foobara-0.0.110/projects/monorepo/lib/foobara/monorepo.rb,
foobara-0.0.110/projects/foobara/lib/foobara/all.rb,
foobara-0.0.110/projects/monorepo/lib/foobara/monorepo/project.rb

Overview

TODO: We should rename this to Projects or something else because we need to manage this stuff for projects inside and outside of the monorepo.

Defined Under Namespace

Classes: Project

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.is_installedObject

Returns the value of attribute is_installed.



18
19
20
# File 'foobara-0.0.110/projects/monorepo/lib/foobara/monorepo.rb', line 18

def is_installed
  @is_installed
end

Class Method Details

.all_projectsObject



20
21
22
# File 'foobara-0.0.110/projects/monorepo/lib/foobara/monorepo.rb', line 20

def all_projects
  @all_projects ||= {}
end

.install!Object



53
54
55
56
# File 'foobara-0.0.110/projects/monorepo/lib/foobara/monorepo.rb', line 53

def install!
  self.is_installed = true
  all_projects.each_value(&:install!)
end

.project(symbol, project_path: nil) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'foobara-0.0.110/projects/monorepo/lib/foobara/monorepo.rb', line 30

def project(symbol, project_path: nil)
  if all_projects.key?(symbol)
    # :nocov:
    raise ArgumentError, "Project #{symbol} already loaded"
    # :nocov:
  end

  project = Project.new(symbol, project_path:)
  project.load

  all_projects[symbol] = project

  if is_installed
    project.install!

    all_projects.each_pair do |key, existing_project|
      next if key == symbol

      existing_project.new_project_added(project)
    end
  end
end

.projects(*symbols) ⇒ Object



24
25
26
27
28
# File 'foobara-0.0.110/projects/monorepo/lib/foobara/monorepo.rb', line 24

def projects(*symbols)
  symbols.each do |symbol|
    project(symbol)
  end
end

.reset_allsObject



58
59
60
# File 'foobara-0.0.110/projects/monorepo/lib/foobara/monorepo.rb', line 58

def reset_alls
  all_projects.each_value(&:reset_all)
end