Exemplo n.º 1
0
def check_save():
    if not os.path.isfile(SAVE_FILE):
        logger.warning(
            "Provided save file does not exist.  Creating a new one.")
        db.create_tables(ALL_MODELS)
        Constants.create(
            save_version=SAVE_VERSION,
            secret_token=secrets.token_bytes(32),
            api_token=secrets.token_hex(32),
        )
    else:
        try:
            save_version = get_save_version()
        except:
            logger.error(
                "Database does not conform to expected format. Failed to start."
            )
            sys.exit(2)
        if save_version != SAVE_VERSION:
            logger.warning(
                f"Save format {save_version} does not match the required version {SAVE_VERSION}!"
            )
            logger.warning("Attempting upgrade")

        updated = False
        while save_version != SAVE_VERSION:
            updated = True
            save_backups = Path("save_backups")
            if not save_backups.is_dir():
                save_backups.mkdir()
            backup_path = (save_backups.resolve() /
                           f"{Path(SAVE_FILE).name}.{save_version}")
            logger.warning(f"Backing up old save as {backup_path}")
            shutil.copyfile(SAVE_FILE, backup_path)
            logger.warning(f"Starting upgrade to {save_version + 1}")
            try:
                upgrade(save_version)
            except Exception as e:
                logger.exception(e)
                logger.error("ERROR: Could not start server")
                sys.exit(2)
                break
            else:
                logger.warning(f"Upgrade to {save_version + 1} done.")
                save_version = get_save_version()
        else:
            if updated:
                logger.warning("Upgrade process completed successfully.")
Exemplo n.º 2
0
def check_save():
    if not os.path.isfile(SAVE_FILE):
        logger.warning("Provided save file does not exist.  Creating a new one.")
        db.create_tables(ALL_MODELS)
        Constants.create(
            save_version=SAVE_VERSION, secret_token=secrets.token_bytes(32)
        )
    else:
        constants = Constants.get_or_none()
        if constants is None:
            logger.error(
                "Database does not conform to expected format. Failed to start."
            )
            sys.exit(2)
        if constants.save_version != SAVE_VERSION:
            logger.warning(
                f"Save format {constants.save_version} does not match the required version {SAVE_VERSION}!"
            )
            logger.warning("Attempting upgrade")

        updated = False
        while constants.save_version != SAVE_VERSION:
            updated = True
            logger.warning(
                f"Backing up old save as {SAVE_FILE}.{constants.save_version}"
            )
            shutil.copyfile(SAVE_FILE, f"{SAVE_FILE}.{constants.save_version}")
            logger.warning(f"Starting upgrade to {constants.save_version + 1}")
            try:
                upgrade(constants.save_version)
            except Exception as e:
                logger.exception(e)
                logger.error("ERROR: Could not start server")
                sys.exit(2)
                break
            else:
                logger.warning(f"Upgrade to {constants.save_version + 1} done.")
                constants = Constants.get()
        else:
            if updated:
                logger.warning("Upgrade process completed successfully.")
Exemplo n.º 3
0
def check_save():
    if not os.path.isfile(SAVE_FILE):
        logger.warning(
            "Provided save file does not exist.  Creating a new one.")
        db.create_tables(ALL_MODELS)
        Constants.create(save_version=SAVE_VERSION,
                         secret_token=secrets.token_bytes(32))
    else:
        constants = Constants.get_or_none()
        if constants is None:
            logger.error(
                "Database does not conform to expected format. Failed to start."
            )
            sys.exit(2)
        if constants.save_version != SAVE_VERSION:
            logger.warning(
                f"Save version {constants.save_version} does not match expected {SAVE_VERSION}!"
            )
            logger.info(
                "Conversion scripts can potentially be applied to upgrade.  For more information see the docs."
            )
            sys.exit(2)