in uberpoet/blazeprojectgen.py [0:0]
def gen_lib_module(self, module_index, module_node, loc_per_unit, language):
deps = self.make_dep_list([i.name for i in module_node.deps])
build_text = self.bzl_lib_template.format(module_node.name, deps, self.wmo_state)
# We now return a topologically sorted list of the graph which means that we will already have the
# deps of a module inside the module index before we process this one. This allows us to reach into
# the generated sources for the dependencies in order to create an instance of their class and
# invoke their functions.
deps_from_index = [{n.name: module_index[n.name]} for n in module_node.deps]
# Make Text
if language == Language.SWIFT:
file_count = (
max(self.swift_file_size_loc, loc_per_unit) * module_node.code_units) / self.swift_file_size_loc
if file_count < 1:
raise ValueError(
"Lines of code count is too small for the module {} to fit one file, increase it.".format(
module_node.name))
files = {
"File{}.swift".format(i): self.swift_gen.gen_file(3, 3, deps_from_index) for i in xrange(file_count)
}
elif language == Language.OBJC:
file_count = (max(self.objc_file_size_loc, loc_per_unit) * module_node.code_units) / self.objc_file_size_loc
if file_count < 1:
raise ValueError(
"Lines of code count is too small for the module {} to fit one file, increase it.".format(
module_node.name))
files = {}
for i in xrange(file_count):
objc_source_file = self.objc_source_gen.gen_file(
3, 3, import_list=deps_from_index + ['File{}.h'.format(i)])
files["File{}.m".format(i)] = objc_source_file
files["File{}.h".format(i)] = self.objc_header_gen.gen_file(objc_source_file)
# Make Module Directories
module_dir_path = join(self.app_root, module_node.name)
files_dir_path = join(module_dir_path, "Sources")
makedir(module_dir_path)
makedir(files_dir_path)
# Write BUCK or BUILD Files
build_name = "BUCK" if self.flavor == 'buck' else "BUILD"
build_path = join(module_dir_path, build_name)
self.write_file(build_path, build_text)
# Write Swift Files
for file_name, file_obj in files.iteritems():
file_path = join(files_dir_path, file_name)
self.write_file(file_path, file_obj.text)
file_obj.text = "" # Save memory after write
module_node.extra_info = files
return files