Ejemplo n.º 1
0
def upgrade_project(project_path, base_rom_filename, progress_bar=None):
    if not os.path.isdir(project_path):
        raise RuntimeError("Project directory \"" + project_path +
                           "\" is not a directory.")
    if not os.path.isfile(base_rom_filename):
        raise RuntimeError("Base Rom \"" + base_rom_filename +
                           "\" is not a file.")

    modules = load_modules()

    # Open project
    project_filename = os.path.join(project_path, PROJECT_FILENAME)

    project = Project()
    project.load(project_filename)
    check_if_project_too_new(project)

    if project.version == FORMAT_VERSION:
        log.info("Project is already up to date.")
        return

    log.info("Upgrading project from version {} to {}".format(
        get_version_name(project.version), get_version_name(FORMAT_VERSION)))
    upgrade_start_time = time.time()

    rom = Rom()
    rom.from_file(base_rom_filename)
    check_if_types_match(project=project, rom=rom)

    compatible_modules = [(name, clazz) for name, clazz in modules
                          if clazz.is_compatible_with_romtype(rom.type)]
    tick_amount = 1.0 / len(compatible_modules)

    for module_name, module_class in compatible_modules:
        log.info("Upgrading {}...".format(module_class.NAME))
        start_time = time.time()
        with module_class() as module:
            module.upgrade_project(
                project.version,
                FORMAT_VERSION,
                rom,
                lambda x, y, astext=False: project.get_resource(
                    module_name, x, y, 'rt' if astext else 'rb', 'utf-8'
                    if astext else None),
                lambda x, y, astext=False: project.get_resource(
                    module_name, x, y, 'wt' if astext else 'wb', 'utf-8'
                    if astext else None, '\n' if astext else None),
                lambda x: project.delete_resource(module_name, x))
            if progress_bar:
                progress_bar.tick(tick_amount)
        log.info("Finished upgrading {} in {:.2f}s".format(
            module_class.NAME,
            time.time() - start_time))

    project.version = FORMAT_VERSION
    project.write(project_filename)

    log.info("Upgraded {} in {:.2f}s".format(project_path,
                                             time.time() - upgrade_start_time))
Ejemplo n.º 2
0
def upgrade_project(project_path, base_rom_filename, progress_bar=None):
    if not os.path.isdir(project_path):
        raise RuntimeError("Project directory \"" + project_path + "\" is not a directory.")
    if not os.path.isfile(base_rom_filename):
        raise RuntimeError("Base Rom \"" + base_rom_filename + "\" is not a file.")

    modules = load_modules()

    # Open project
    project_filename = os.path.join(project_path, PROJECT_FILENAME)

    project = Project()
    project.load(project_filename)
    check_if_project_too_new(project)

    if project.version == FORMAT_VERSION:
        log.info("Project is already up to date.")
        return

    log.info("Upgrading project from version {} to {}".format(
        get_version_name(project.version),
        get_version_name(FORMAT_VERSION)))
    upgrade_start_time = time.time()

    rom = Rom()
    rom.from_file(base_rom_filename)
    check_if_types_match(project=project, rom=rom)

    compatible_modules = [(name, clazz) for name, clazz in modules if clazz.is_compatible_with_romtype(rom.type)]
    tick_amount = 1.0/len(compatible_modules)

    for module_name, module_class in compatible_modules:
        log.info("Upgrading {}...".format(module_class.NAME))
        start_time = time.time()
        with module_class() as module:
            module.upgrade_project(project.version, FORMAT_VERSION, rom,
                                   lambda x, y, astext=False : project.get_resource(module_name, x, y, 'rt' if astext else 'rb', 'utf-8' if astext else None),
                                   lambda x, y, astext=False: 
                                        project.get_resource(module_name, x, y, 
                                            'wt' if astext else 'wb', 
                                            'utf-8' if astext else None,
                                            '\n' if astext else None),
                                   lambda x: project.delete_resource(module_name, x))
            if progress_bar:
                progress_bar.tick(tick_amount)
        log.info("Finished upgrading {} in {:.2f}s".format(module_class.NAME, time.time() - start_time))

    project.version = FORMAT_VERSION
    project.write(project_filename)

    log.info("Upgraded {} in {:.2f}s".format(project_path, time.time() - upgrade_start_time))
Ejemplo n.º 3
0
def upgrade_project(project_path, base_rom_filename, progress_bar=None):
    modules = load_modules()

    # Open project
    project_filename = os.path.join(project_path, PROJECT_FILENAME)

    project = Project()
    project.load(project_filename)
    check_if_project_too_new(project)

    if project.version == FORMAT_VERSION:
        log.info("Project is already up to date.")
        return

    log.info(
        "Upgrading project from version {} to {}".format(
            get_version_name(project.version), get_version_name(FORMAT_VERSION)
        )
    )
    upgrade_start_time = time.time()

    rom = Rom()
    rom.from_file(base_rom_filename)
    check_if_types_match(project=project, rom=rom)

    compatible_modules = [(name, clazz) for name, clazz in modules if clazz.is_compatible_with_romtype(rom.type)]
    tick_amount = 1.0 / len(compatible_modules)

    for module_name, module_class in compatible_modules:
        log.info("Upgrading {}...".format(module_class.NAME))
        start_time = time.time()
        with module_class() as module:
            module.upgrade_project(
                project.version,
                FORMAT_VERSION,
                rom,
                lambda x, y: project.get_resource(module_name, x, y, "rb"),
                lambda x, y: project.get_resource(module_name, x, y, "wb"),
                lambda x: project.delete_resource(module_name, x),
            )
            if progress_bar:
                progress_bar.tick(tick_amount)
        log.info("Finished upgrading {} in {:.2f}s".format(module_class.NAME, time.time() - start_time))

    project.version = FORMAT_VERSION
    project.write(project_filename)

    log.info("Upgraded {} in {:.2f}s".format(project_path, time.time() - upgrade_start_time))