in uberpoet/cpprojectgen.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_files = {
"AppDelegate.swift": self.gen_app_main(app_node, module_index),
"dummy.swift": "",
"AppContainer.podspec": self.gen_app_podspec(app_node),
}
self.copy_resource("Info.plist", join(app_module_dir, "Info.plist"))
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)))
podfile_text = self.gen_podfile(library_node_list)
podfile_path = join(self.app_root, "Podfile")
self.write_file(podfile_path, podfile_text)
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)