#EA-Script

import bpy
import os

# Define how long the version numbers should
length = 2 #Global

# Overwite the publish file without storing a new version
save_without_numbers : bool #Global

def get_last_number(string):
    numbering=""
    count = True
    without_number = ""
    for char in string[::-1]:
        char_counts = char.isdigit() or char == "_"
        if char_counts and count:
            numbering = char + numbering
        else:
            count = False
            without_number = char + without_number


    number = numbering.replace("_", "")
    num = int(number.lstrip("0")) + 1 if number else 1
    return num, without_number

def save_file():
    file_path = bpy.data.filepath
    dir_name, file_name = os.path.split(file_path)
    file_base, file_ext = os.path.splitext(file_name)

    file_base_split = get_last_number(file_base)
    file_version_str = "{:0>{}}".format(file_base_split[0], length)
    file_base_without_number = file_base_split[1]

    versioned_file = bpy.data.filepath

    if not save_without_numbers:
        versioned_file = os.path.join(dir_name,file_base_without_number + "_" + file_version_str + file_ext)
        bpy.ops.wm.save_as_mainfile(filepath=versioned_file)

    upper_dir = os.path.dirname(dir_name)
    exported_file = os.path.join(upper_dir, file_base_without_number + file_ext)
    bpy.ops.wm.save_as_mainfile(filepath=exported_file)

    bpy.ops.wm.open_mainfile(filepath=versioned_file)

save_file()