def gen_app()

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)