Skip to content
Snippets Groups Projects

Resolve "Support for migration to a new silecs version"

Merged m.nabywaniec requested to merge 58-silecs-migrate into master
All threads resolved!
1 file
+ 12
15
Compare changes
  • Side-by-side
  • Inline
+ 12
15
@@ -34,11 +34,14 @@ try:
except KeyError:
SILECS_BASE= os.path.join(SILECS_DIR, SILECS_VERSION)
SILECS_BASE=("..")
DESIGN_SHEMA_FILE="DesignSchema.xsd"
DEPLOY_SHEMA_FILE="DeploySchema.xsd"
DESIGN_SHEMA_PATH = f"{SILECS_BASE}/silecs-model/xml/{DESIGN_SHEMA_FILE}"
DEPLOY_SHEMA_PATH = f"{SILECS_BASE}/silecs-model/xml/{DEPLOY_SHEMA_FILE}"
DESIGN_SHEMA_PATH = f"{SILECS_BASE}/silecs-model/src/xml/{DESIGN_SHEMA_FILE}"
DEPLOY_SHEMA_PATH = f"{SILECS_BASE}/silecs-model/src/xml/{DEPLOY_SHEMA_FILE}"
SILECS_CODEGEN_BASE=f"{SILECS_BASE}/silecs-codegen/src/xml/"
SILECS_CODEGEN_MIGRATION=f"{SILECS_CODEGEN_BASE}/migration"
@@ -492,7 +495,7 @@ def get_silecs_version_from_silecsdesign_file(silecsdesign_file):
def get_silecs_version_from_silecsdeploy_file(silecsdeploy_file):
silecs_deploy_document = minidom.parse(silecsdeploy_file)
silecs_deploy_element = silecs_deploy_document.getElementsByTagName("SILECS-Depoloy")[0]
silecs_deploy_element = silecs_deploy_document.getElementsByTagName("SILECS-Deploy")[0]
version = silecs_deploy_element.getAttribute("silecs-version")
return version
@@ -507,19 +510,13 @@ def get_silecs_version_from_file(filepath):
def get_silecs_desing_deploy_file(project_path):
project_path_src = os.path.join(project_path, "src")
is_silecs_deploy_design = lambda f: f.split(".")[-1] == SILECSDESIGN or f.split(".")[-1] == SILECSDEPLOY
silecs_design_deploy_files = [f for f in os.listdir(project_path) if os.path.isfile(os.path.join(project_path, f)) and is_silecs_deploy_design(f)]
silecs_design_deploy_files = [f for f in os.listdir(project_path_src) if os.path.isfile(os.path.join(project_path_src, f)) and is_silecs_deploy_design(f)]
if not silecs_design_deploy_files:
return Exception("No silecs design/deploy files found for that project")
elif len(silecs_design_deploy_files) > 1 :
return Exception("In directory should be one silecs design/deploy file")
return os.path.abspath(os.path.join(project_path, silecs_design_deploy_files[0]))
return os.path.abspath(os.path.join(project_path_src, silecs_design_deploy_files[0]))
def get_silecs_version_from_project(project_path):
try:
silecs_desing_deploy_file = get_silecs_desing_deploy_file(project_path)
return get_silecs_version_from_file(silecs_desing_deploy_file)
except Exception as e:
print(e)
def get_available_versions():
"""Find available versions of silecs in SILECS_DIR"""
@@ -539,8 +536,9 @@ def get_project_type(project_path):
project_path_src = os.path.join(project_path, "src")
is_silecs_design_file = lambda f: f.split(".")[-1] == SILECSDESIGN
is_silecs_deploy_file = lambda f: f.split(".")[-1] == SILECSDEPLOY
silecs_design_files = [f for f in os.listdir(project_path) if os.path.isfile(os.path.join(project_path_src, f)) and is_silecs_design_file(f)]
silecs_deploy_files = [f for f in os.listdir(project_path) if os.path.isfile(os.path.join(project_path_src, f)) and is_silecs_deploy_file(f)]
silecs_design_files = [f for f in os.listdir(project_path_src) if os.path.isfile(os.path.join(project_path_src, f)) and is_silecs_design_file(f)]
silecs_deploy_files = [f for f in os.listdir(project_path_src) if os.path.isfile(os.path.join(project_path_src, f)) and is_silecs_deploy_file(f)]
project_type = ProjectType.OTHER
if silecs_design_files:
@@ -583,7 +581,7 @@ def silecs_migrate(project_path, new_version):
project_type = get_project_type(project_path)
silecs_filepath = get_silecs_desing_deploy_file(project_path)
old_version = get_silecs_version_from_project(project_path)
old_version = get_silecs_version_from_file(silecs_filepath)
if version.parse(new_version) <= version.parse(old_version):
raise Exception(f"Migration from {old_version} to {new_version} not possible. The target-version always need to be newer than the current version")
@@ -592,7 +590,6 @@ def silecs_migrate(project_path, new_version):
matching_versions = get_matching_versions(available_versions, old_version, new_version)
migration_modules = get_migration_modules(matching_versions, old_version)
new_xml_schema = os.path.join(SILECS_DIR, new_version, "silecs-model", "src", "xml")
if project_type == ProjectType.DESIGN:
Loading