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
1 file
+ 63
6
Compare changes
  • Side-by-side
  • Inline
+ 63
6
@@ -6,6 +6,7 @@ import datetime
import shutil
import subprocess
import lxml.etree
from xml.dom import minidom
from packaging import version
@@ -151,6 +152,13 @@ def create_backup_file(filepath):
with open(backup_file, 'w+'):
shutil.copyfile(src=filepath, dst=backup_file)
def get_version_underscored_tiny_as_x(version):
version_splitted = version.split(".")
major = version_splitted[0]
minor = version_splitted[1]
return major + "_" + minor + "_x"
##### Validate silecs design deploy ######
def validate(silecs_design_deploy_path, xsd_path):
@@ -450,11 +458,57 @@ def silecs_release(file_paths):
print("Error during release. Check errors above.")
def is_silecs_design_file(filepath):
return get_extension(filepath) == SILECSDESIGN
def is_silecs_deploy_file(filepath):
return get_extension(filepath) == SILECSDEPLOY
def get_silecs_version_from_silecsdesign_file(silecsdesign_file):
silecs_design_document = minidom.parse(silecsdesign_file)
silecs_design_element = silecs_design_document.getElementsByTagName("SILECS-Design")[0]
version = silecs_design_element.getAttribute("silecs-version")
return version
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]
version = silecs_deploy_element.getAttribute("silecs-version")
return version
def get_silecs_version_from_file(filepath):
if is_silecs_design_file(filepath):
return get_silecs_version_from_silecsdesign_file(filepath)
else:
return get_silecs_version_from_silecsdeploy_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)]
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]))
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)
##### Migrate file to new silecs version ######
def silecs_migrate(project_path, new_version):
old_version = get_silecs_version_from_project(project_path)
old_version_underscored = get_version_underscored_tiny_as_x(old_version)
new_version_underscored = get_version_underscored_tiny_as_x(new_version)
def silecs_migrate(file_paths):
# TODO - See here for details: https://gitlab.com/al.schwinn/silecs-cli/-/issues/7
print("Not implemented yet .. please update/migrate by hand for now")
##### Parse arguments ######
@@ -514,8 +568,9 @@ def _parse_arguments():
parser.add_argument(
"-m",
"--migrate",
metavar="file",
help="migrate silecs design/deploy to new silecs version (TODO)"
nargs=2,
metavar=("file", "new_version"),
help="migrate silecs design/deploy to new silecs version"
)
return parser
@@ -545,7 +600,9 @@ def run():
if options.release:
silecs_release(options.release)
if options.migrate:
silecs_migrate(options.migrate)
project_path=options.migrate[0]
new_version=options.migrate[1]
silecs_migrate(project_path, new_version)
if __name__ == "__main__":
run()
Loading