early-access version 2853
This commit is contained in:
82
externals/vcpkg/scripts/generateBaseline.py
vendored
Executable file
82
externals/vcpkg/scripts/generateBaseline.py
vendored
Executable file
@@ -0,0 +1,82 @@
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
import time
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
SCRIPT_DIRECTORY = os.path.dirname(os.path.abspath(__file__))
|
||||
PORTS_DIRECTORY = os.path.join(SCRIPT_DIRECTORY, '../ports')
|
||||
VERSIONS_DB_DIRECTORY = os.path.join(SCRIPT_DIRECTORY, '../versions')
|
||||
|
||||
|
||||
def get_version_tag(version):
|
||||
if 'version' in version:
|
||||
return version['version']
|
||||
elif 'version-date' in version:
|
||||
return version['version-date']
|
||||
elif 'version-semver' in version:
|
||||
return version['version-semver']
|
||||
elif 'version-string' in version:
|
||||
return version['version-string']
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def get_version_port_version(version):
|
||||
if 'port-version' in version:
|
||||
return version['port-version']
|
||||
return 0
|
||||
|
||||
|
||||
def generate_baseline():
|
||||
start_time = time.time()
|
||||
|
||||
# Assume each directory in ${VCPKG_ROOT}/ports is a different port
|
||||
port_names = [item for item in os.listdir(
|
||||
PORTS_DIRECTORY) if os.path.isdir(os.path.join(PORTS_DIRECTORY, item))]
|
||||
port_names.sort()
|
||||
|
||||
baseline_entries = {}
|
||||
total_count = len(port_names)
|
||||
for i, port_name in enumerate(port_names, 1):
|
||||
port_file_path = os.path.join(
|
||||
VERSIONS_DB_DIRECTORY, f'{port_name[0]}-', f'{port_name}.json')
|
||||
|
||||
if not os.path.exists(port_file_path):
|
||||
print(
|
||||
f'Error: No version file for {port_name}.\n', file=sys.stderr)
|
||||
continue
|
||||
sys.stderr.write(
|
||||
f'\rProcessed {i}/{total_count} ({i/total_count:.2%})')
|
||||
with open(port_file_path, 'r') as db_file:
|
||||
try:
|
||||
versions_object = json.load(db_file)
|
||||
if versions_object['versions']:
|
||||
last_version = versions_object['versions'][0]
|
||||
baseline_entries[port_name] = {
|
||||
'baseline': get_version_tag(last_version),
|
||||
'port-version': get_version_port_version(last_version)
|
||||
}
|
||||
except json.JSONDecodeError as e:
|
||||
print(f'Error: Decoding {port_file_path}\n{e}\n')
|
||||
baseline_object = {}
|
||||
baseline_object['default'] = baseline_entries
|
||||
|
||||
os.makedirs(VERSIONS_DB_DIRECTORY, exist_ok=True)
|
||||
baseline_path = os.path.join(VERSIONS_DB_DIRECTORY, 'baseline.json')
|
||||
with open(baseline_path, 'w') as baseline_file:
|
||||
json.dump(baseline_object, baseline_file)
|
||||
|
||||
elapsed_time = time.time() - start_time
|
||||
print(f'\nElapsed time: {elapsed_time:.2f} seconds')
|
||||
|
||||
|
||||
def main():
|
||||
if not os.path.exists(VERSIONS_DB_DIRECTORY):
|
||||
print(f'Version DB files must exist before generating a baseline.\nRun: `python generatePortVersionsDB`\n')
|
||||
generate_baseline()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Reference in New Issue
Block a user