aboutsummaryrefslogtreecommitdiff
path: root/vcpkg_version_finder.py
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /vcpkg_version_finder.py
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'vcpkg_version_finder.py')
-rw-r--r--vcpkg_version_finder.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/vcpkg_version_finder.py b/vcpkg_version_finder.py
new file mode 100644
index 00000000..71b01c22
--- /dev/null
+++ b/vcpkg_version_finder.py
@@ -0,0 +1,60 @@
+from pathlib import Path
+import json
+import sys
+
+if (sys.version_info.major, sys.version_info.minor) < (3, 6):
+ raise TypeError("at least python 3.6 is required for this script")
+
+if len(sys.argv) > 1:
+ PKG_NAME = sys.argv[1]
+else:
+ raise TypeError("package name must be passed")
+
+if len(sys.argv) > 2:
+ VCPKG_PATH = Path(sys.argv[2])
+else:
+ print("no vcpkg path has been passed. Assuming vcpkg root is on the same level as this script file")
+ VCPKG_PATH = Path(__file__).parent / 'vcpkg'
+
+if len(sys.argv) > 3:
+ print("the argumnets after the second one are ignored")
+
+
+if not VCPKG_PATH.exists():
+ raise FileNotFoundError(f"dir does not exist: {VCPKG_PATH}")
+
+VERSIONS_PATH = VCPKG_PATH / 'versions'
+if not VERSIONS_PATH.exists():
+ raise FileNotFoundError(f"dir does not exist: {VERSIONS_PATH}")
+
+PKG_VERSION_PATH = VERSIONS_PATH / (PKG_NAME[0] + '-')
+if not PKG_VERSION_PATH.exists():
+ raise FileNotFoundError(f"dir does not exist: {PKG_VERSION_PATH}")
+
+PKG_VERSION_JSON_PATHNAME = PKG_VERSION_PATH / (PKG_NAME + '.json')
+if not PKG_VERSION_JSON_PATHNAME.exists:
+ raise FileNotFoundError(f"dir does not exist: {PKG_VERSION_JSON_PATHNAME}")
+
+
+print(f'reading versions from {PKG_VERSION_JSON_PATHNAME}')
+with open(PKG_VERSION_JSON_PATHNAME) as f:
+ pkg_versions_file = json.load(f)
+ info_list = pkg_versions_file["versions"]
+
+ versions_list = []
+ for info in info_list:
+ if "version-string" in info:
+ versions_list.append(info["version-string"])
+ elif "version" in info:
+ versions_list.append(info["version"])
+ elif "version-date" in info:
+ versions_list.append(info["version-date"])
+ elif "version-semver" in info:
+ versions_list.append(info["version-semver"])
+ else:
+ raise KeyError(info)
+
+ versions_set = sorted(set(versions_list), reverse=True)
+
+ for version in versions_set:
+ print(version) \ No newline at end of file