class Mona::Project::Builder include Mona::Mixins Inject = Mona::Deps[ "project.factory", ] include Inject sig do params(project_root: String).returns(Mona::Project) end def call(project_root) project_file_path = "#{project_root}/#{Mona::PROJECT_FILENAME}" project_init_proc = proc { instance_eval(File.read(project_file_path)) } project = factory.call(project_root, init_proc: project_init_proc) end end