aboutsummaryrefslogtreecommitdiff
path: root/scripts/generateBaseline.py
blob: 45c424a7df362dd27fea4dac9b29d964efefd9ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import os
import json
import subprocess
import sys

SCRIPT_DIRECTORY = os.path.dirname(os.path.abspath(__file__))


def generate_baseline(ports_path, output_filepath):
    port_names = [item for item in os.listdir(
        ports_path) if os.path.isdir(os.path.join(ports_path, item))]
    port_names.sort()

    total = len(port_names)
    baseline_versions = {}
    for counter, port_name in enumerate(port_names):
        vcpkg_exe = os.path.join(SCRIPT_DIRECTORY, '../vcpkg')
        print(f'[{counter + 1}/{total}] Getting package info for {port_name}')
        output = subprocess.run(
            [vcpkg_exe, 'x-package-info', '--x-json', port_name],
            capture_output=True,
            encoding='utf-8')

        if output.returncode == 0:
            package_info = json.loads(output.stdout)
            port_info = package_info['results'][port_name]

            version = {}
            for scheme in ['version-string', 'version-semver', 'version-date', 'version']:
                if scheme in port_info:
                    version[scheme] = package_info['results'][port_name][scheme]
                    break
            version['port-version'] = 0
            if 'port-version' in port_info:
                version['port-version'] = port_info['port-version']
            baseline_versions[port_name] = version
        else:
            print(f'x-package-info --x-json {port_name} failed: ', output.stdout.strip(), file=sys.stderr)

    output = {}
    output['default'] = baseline_versions

    with open(output_filepath, 'r') as output_file:
        json.dump(baseline_versions, output_file)
    sys.exit(0)


if __name__ == '__main__':
    generate_baseline(
        ports_path=f'{SCRIPT_DIRECTORY}/../ports', output_filepath='baseline.json')