From a0298a45c1389c2e10a8c71bf44cbc8c935bf899 Mon Sep 17 00:00:00 2001 From: socketz Date: Tue, 27 May 2025 16:44:14 +0200 Subject: [PATCH 1/6] Updated and fixed some issues detected in python scripts --- scripts/utils/create_package_template.py | 41 +++++++++++++++++++++--- scripts/utils/update_package.py | 35 ++++++++++++++++++-- 2 files changed, 69 insertions(+), 7 deletions(-) diff --git a/scripts/utils/create_package_template.py b/scripts/utils/create_package_template.py index 6ff41c93f..019739975 100755 --- a/scripts/utils/create_package_template.py +++ b/scripts/utils/create_package_template.py @@ -29,6 +29,29 @@ def package_version(dependency_version): version_segments[3] = time.strftime("%Y%m%d") return ".".join(version_segments[:4]) +# Get the package version from common.vm package version +def get_common_vm_version(): + common_vm_path = os.path.join(root_path, "packages", "common.vm") + nuspec_path = os.path.join(common_vm_path, "common.vm.nuspec") + + if os.path.exists(nuspec_path): + with open(nuspec_path, "r") as f: + for line in f: + if "" in line: + return line.split("")[1].split("")[0].strip() + return "0.0.0.20250206" # Default version if version tag is not found + +# Get the package version from nodejs.vm package version +def get_nodejs_vm_version(): + nodejs_vm_path = os.path.join(root_path, "packages", "nodejs.vm") + nuspec_path = os.path.join(nodejs_vm_path, "nodejs.vm.nuspec") + + if os.path.exists(nuspec_path): + with open(nuspec_path, "r") as f: + for line in f: + if "" in line: + return line.split("")[1].split("")[0].strip() + return "0.0.0.20250219" # Default version if version tag is not found UNINSTALL_TEMPLATE_NAME = "chocolateyuninstall.ps1" INSTALL_TEMPLATE_NAME = "chocolateyinstall.ps1" @@ -37,6 +60,8 @@ def package_version(dependency_version): Needs the following format strings: pkg_name="...", version="...", authors="...", description="..." """ +COMMON_PACKAGE_VERSION = get_common_vm_version() +NODEJS_PACKAGE_VERSION = get_nodejs_vm_version() NUSPEC_TEMPLATE_NAME = "{}.vm.nuspec" NUSPEC_TEMPLATE = r""" @@ -46,7 +71,7 @@ def package_version(dependency_version): {authors} {description} - + {category} @@ -61,8 +86,8 @@ def package_version(dependency_version): {authors} {description} - - + + {category} @@ -77,7 +102,7 @@ def package_version(dependency_version): {authors} {description} - + {category} @@ -97,7 +122,7 @@ def package_version(dependency_version): {authors} {description} - + {category} @@ -393,6 +418,8 @@ def create_template( console_app="", inner_folder="", arguments="", + common_version=COMMON_PACKAGE_VERSION, + nodejs_version=NODEJS_PACKAGE_VERSION, ): pkg_path = os.path.join(packages_path, f"{pkg_name}.vm") try: @@ -416,6 +443,8 @@ def create_template( dependency=dependency, dependency_version=version, category=category, + common_version=common_version, + nodejs_version=nodejs_version, ) ) @@ -430,6 +459,8 @@ def create_template( shim_path=shim_path, console_app=console_app, inner_folder=inner_folder, + common_version=common_version, + nodejs_version=nodejs_version, ) ) diff --git a/scripts/utils/update_package.py b/scripts/utils/update_package.py index 668ca9595..0e492b336 100755 --- a/scripts/utils/update_package.py +++ b/scripts/utils/update_package.py @@ -252,11 +252,11 @@ def update_version_url(package): # Update dependencies -# Metapackages have only one dependency and same name (adding `.vm`) and version as the dependency +# Metapackages have only one dependency and same name (adding `.vm`) and version as the dependency def update_dependencies(package): nuspec_path, content = get_nuspec(package) matches = re.findall( - r'[^"\']+)["\'] version="\[(?P[^"\']+)\]" */>', content + r'[^"\']+)["\']\s+version=["\']\[(?P[^"\']+)\]["\'] */>', content ) updates = False @@ -285,6 +285,33 @@ def update_dependencies(package): return package_version return None +# Update metapackage dependencies +# Metapackages have only one dependency and same name (adding `.vm`) and version as the dependency +def update_metapackage_dependencies(package): + nuspec_path, content = get_nuspec(package) + matches = re.findall( + r'[^"\']+)["\']\s+version=["\'](?P[^"\'\[\]]+)["\'] */>', content + ) + + updates = False + for dependency, version in matches: + stream = os.popen(f"powershell.exe choco find -er {dependency}") + output = stream.read() + # ignore case to also find dependencies like GoogleChrome + m = re.search(rf"^{dependency}\|(?P.+)", output, re.M | re.I) + if m: + latest_version = m.group("version") + if latest_version != version: + content = re.sub( + rf'', + f'', + content, + ) + updates = True + if updates: + with open(nuspec_path, "w") as file: + file.write(content) + # Update package which uses a generic URL that has no version def update_dynamic_url(package): @@ -398,6 +425,10 @@ def from_str(string): is_install_script_present = check_install_script_present(args.package_name) latest_version = None + + # Update dependencies first, as it is required for other updates + update_metapackage_dependencies(args.package_name) + if args.update_type & UpdateType.DEPENDENCIES: latest_version = update_dependencies(args.package_name) From 4ca1c6caf301ac2f9309ac062776557b5663a612 Mon Sep 17 00:00:00 2001 From: socketz Date: Tue, 27 May 2025 17:20:52 +0200 Subject: [PATCH 2/6] Added feature for missing version in some metapackages --- scripts/utils/update_package.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/utils/update_package.py b/scripts/utils/update_package.py index 0e492b336..261b9fbb1 100755 --- a/scripts/utils/update_package.py +++ b/scripts/utils/update_package.py @@ -290,11 +290,11 @@ def update_dependencies(package): def update_metapackage_dependencies(package): nuspec_path, content = get_nuspec(package) matches = re.findall( - r'[^"\']+)["\']\s+version=["\'](?P[^"\'\[\]]+)["\'] */>', content + r'[^"\']+)["\']\s+(version=["\'](?P[^"\'\[\]]+)["\'] *)?/>', content ) updates = False - for dependency, version in matches: + for dependency, _, version in matches: stream = os.popen(f"powershell.exe choco find -er {dependency}") output = stream.read() # ignore case to also find dependencies like GoogleChrome @@ -303,7 +303,7 @@ def update_metapackage_dependencies(package): latest_version = m.group("version") if latest_version != version: content = re.sub( - rf'', + rf'', f'', content, ) From aadb5902b2532ef49082b359ebe02ced4240e1cb Mon Sep 17 00:00:00 2001 From: socketz Date: Tue, 27 May 2025 17:25:26 +0200 Subject: [PATCH 3/6] Fixed format --- scripts/utils/create_package_template.py | 3 +++ scripts/utils/update_package.py | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/scripts/utils/create_package_template.py b/scripts/utils/create_package_template.py index 019739975..e2b4c6afb 100755 --- a/scripts/utils/create_package_template.py +++ b/scripts/utils/create_package_template.py @@ -29,6 +29,7 @@ def package_version(dependency_version): version_segments[3] = time.strftime("%Y%m%d") return ".".join(version_segments[:4]) + # Get the package version from common.vm package version def get_common_vm_version(): common_vm_path = os.path.join(root_path, "packages", "common.vm") @@ -41,6 +42,7 @@ def get_common_vm_version(): return line.split("")[1].split("")[0].strip() return "0.0.0.20250206" # Default version if version tag is not found + # Get the package version from nodejs.vm package version def get_nodejs_vm_version(): nodejs_vm_path = os.path.join(root_path, "packages", "nodejs.vm") @@ -53,6 +55,7 @@ def get_nodejs_vm_version(): return line.split("")[1].split("")[0].strip() return "0.0.0.20250219" # Default version if version tag is not found + UNINSTALL_TEMPLATE_NAME = "chocolateyuninstall.ps1" INSTALL_TEMPLATE_NAME = "chocolateyinstall.ps1" diff --git a/scripts/utils/update_package.py b/scripts/utils/update_package.py index 261b9fbb1..071e2eb51 100755 --- a/scripts/utils/update_package.py +++ b/scripts/utils/update_package.py @@ -285,6 +285,7 @@ def update_dependencies(package): return package_version return None + # Update metapackage dependencies # Metapackages have only one dependency and same name (adding `.vm`) and version as the dependency def update_metapackage_dependencies(package): @@ -311,7 +312,7 @@ def update_metapackage_dependencies(package): if updates: with open(nuspec_path, "w") as file: file.write(content) - + # Update package which uses a generic URL that has no version def update_dynamic_url(package): @@ -428,7 +429,7 @@ def from_str(string): # Update dependencies first, as it is required for other updates update_metapackage_dependencies(args.package_name) - + if args.update_type & UpdateType.DEPENDENCIES: latest_version = update_dependencies(args.package_name) From e2a38556ca44c5c47dd556ccfabde21deef0b2e3 Mon Sep 17 00:00:00 2001 From: socketz Date: Wed, 10 Sep 2025 11:16:59 +0200 Subject: [PATCH 4/6] Fix dependency version placeholder in package template --- scripts/utils/create_package_template.py | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/scripts/utils/create_package_template.py b/scripts/utils/create_package_template.py index 1ac302d1e..e2b4c6afb 100755 --- a/scripts/utils/create_package_template.py +++ b/scripts/utils/create_package_template.py @@ -105,19 +105,7 @@ def get_nodejs_vm_version(): {authors} {description} - + {category} From 79f50224ce5098769b4d78718727814e9f55607a Mon Sep 17 00:00:00 2001 From: socketz Date: Wed, 10 Sep 2025 11:28:15 +0200 Subject: [PATCH 5/6] Refactor dependency update order in update_package.py --- scripts/utils/update_package.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/scripts/utils/update_package.py b/scripts/utils/update_package.py index 3e9203b07..6160d76bb 100755 --- a/scripts/utils/update_package.py +++ b/scripts/utils/update_package.py @@ -445,10 +445,9 @@ def from_str(string): latest_version = None - # Update dependencies first, as it is required for other updates - update_metapackage_dependencies(args.package_name) - if args.update_type & UpdateType.DEPENDENCIES: + # Update dependencies first, as it is required for other updates + update_metapackage_dependencies(args.package_name) latest_version = update_dependencies(args.package_name) if is_install_script_present: From fa94bf7e4dfc49a637924ffbdb05c1b6f80cc6cb Mon Sep 17 00:00:00 2001 From: socketz Date: Wed, 10 Sep 2025 16:36:54 +0200 Subject: [PATCH 6/6] Fix regex for dependency version extraction --- scripts/utils/update_package.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/scripts/utils/update_package.py b/scripts/utils/update_package.py index 6160d76bb..ca97e7740 100755 --- a/scripts/utils/update_package.py +++ b/scripts/utils/update_package.py @@ -308,11 +308,11 @@ def update_dependencies(package): def update_metapackage_dependencies(package): nuspec_path, content = get_nuspec(package) matches = re.findall( - r'[^"\']+)["\']\s+(version=["\'](?P[^"\'\[\]]+)["\'] *)?/>', content + r'[^"\']+)["\']\s+(?:version=["\'](?P[^"\'\[\]]+)["\'] *)?/>', content ) updates = False - for dependency, _, version in matches: + for dependency, version in matches: stream = os.popen(f"powershell.exe choco find -er {dependency}") output = stream.read() # ignore case to also find dependencies like GoogleChrome @@ -320,8 +320,12 @@ def update_metapackage_dependencies(package): if m: latest_version = m.group("version") if latest_version != version: + if version is not None: + pattern = rf'' + else: + pattern = rf'' content = re.sub( - rf'', + pattern, f'', content, )