in uberpoet/blazeprojectgen.py [0:0]
def gen_app(self, app_node, node_list, target_swift_loc, target_objc_loc, loc_json_file_path):
library_node_list = [n for n in node_list if n.node_type == ModuleNode.LIBRARY]
if loc_json_file_path:
loc_reader = locreader.LocFileReader()
loc_reader.read_loc_file(loc_json_file_path)
module_index = {}
for n in library_node_list:
loc = loc_reader.loc_for_module(n.name)
language = loc_reader.language_for_module(n.name)
module_index[n.name] = {
"files": self.gen_lib_module(module_index, n, loc, language),
"loc": loc,
"language": language
}
else:
total_code_units = 0
for l in library_node_list:
total_code_units += l.code_units
total_loc = target_swift_loc + target_objc_loc
swift_module_count_percentage = round(float(target_swift_loc) / total_loc, 2)
loc_per_unit = total_loc / total_code_units
module_index = {}
max_swift_index = int(math.ceil((len(library_node_list) * swift_module_count_percentage)))
for idx, n in enumerate(library_node_list):
language = Language.OBJC if idx >= max_swift_index else Language.SWIFT
module_index[n.name] = {
"files": self.gen_lib_module(module_index, n, loc_per_unit, language),
"loc": loc_per_unit,
"language": language
}
app_module_dir = join(self.app_root, "App")
makedir(app_module_dir)
app_build_file = "BUCK" if self.flavor == 'buck' else "BUILD"
app_files = {
"AppDelegate.swift": self.gen_app_main(app_node, module_index),
app_build_file: self.gen_app_build(app_node, library_node_list),
}
self.copy_resource("Info.plist", join(app_module_dir, "Info.plist"))
if self.flavor == 'buck':
self.copy_resource("mockbuckconfig", join(self.app_root, ".buckconfig"))
elif self.flavor == 'bazel':
self.copy_resource("mockbazelworkspace", join(self.app_root, "WORKSPACE"))
self.copy_resource_dir("tools", join(self.app_root, "tools"))
for name, text in app_files.iteritems():
self.write_file(join(app_module_dir, name), text)
if loc_json_file_path:
# Copy the LOC file into the generated project.
shutil.copyfile(loc_json_file_path, join(self.app_root, basename(loc_json_file_path)))
serializable_module_index = {
key: {
"file_count": len(value["files"]),
"loc": value["loc"]
} for key, value in module_index.items()
}
with open(join(self.app_root, "module_index.json"), "w") as module_index_json_file:
json.dump(serializable_module_index, module_index_json_file)