|
1 | 1 | import os |
2 | 2 | import shutil |
3 | 3 |
|
4 | | -from cfbs.utils import ( |
5 | | - CFBSNetworkError, |
6 | | - fetch_url, |
7 | | - get_json, |
8 | | - mkdir, |
9 | | - CFBSExitError, |
10 | | - version_is_at_least, |
11 | | -) |
| 4 | +from cfbs.utils import CFBSNetworkError, fetch_url, get_json, mkdir, CFBSExitError |
12 | 5 |
|
13 | 6 | ENTERPRISE_RELEASES_URL = "https://cfengine.com/release-data/enterprise/releases.json" |
14 | 7 |
|
|
40 | 33 | } |
41 | 34 |
|
42 | 35 |
|
43 | | -def get_download_urls_enterprise(min_version=None): |
44 | | - download_urls = {} |
45 | | - reported_checksums = {} |
46 | | - |
47 | | - print("* gathering download URLs...") |
48 | | - |
49 | | - try: |
50 | | - data = get_json(ENTERPRISE_RELEASES_URL) |
51 | | - except CFBSNetworkError: |
52 | | - raise CFBSExitError( |
53 | | - "Downloading CFEngine release data failed - check your Wi-Fi / network settings." |
54 | | - ) |
55 | | - |
56 | | - for release_data in data["releases"]: |
57 | | - version = release_data["version"] |
58 | | - |
59 | | - if not version_is_at_least(version, min_version): |
60 | | - continue |
61 | | - |
62 | | - if version in MISSING_DATA_VERSIONS: |
63 | | - download_urls[version] = HARDCODED_URLS[version] |
64 | | - reported_checksums[version] = HARDCODED_CHECKSUMS[version] |
65 | | - continue |
66 | | - |
67 | | - release_url = release_data["URL"] |
68 | | - try: |
69 | | - subdata = get_json(release_url) |
70 | | - except CFBSNetworkError: |
71 | | - raise CFBSExitError( |
72 | | - "Downloading CFEngine release data for version %s failed - check your Wi-Fi / network settings." |
73 | | - % version |
74 | | - ) |
75 | | - artifacts_data = subdata["artifacts"] |
76 | | - |
77 | | - if "Additional Assets" not in artifacts_data: |
78 | | - # happens for 3.9.0b1, 3.8.0b1, 3.6.1, 3.6.0 |
79 | | - continue |
80 | | - |
81 | | - masterfiles_data = None |
82 | | - for asset in artifacts_data["Additional Assets"]: |
83 | | - if asset["Title"] == "Masterfiles ready-to-install tarball": |
84 | | - masterfiles_data = asset |
85 | | - |
86 | | - if masterfiles_data is None: |
87 | | - # happens for 3.9.2, 3.9.0, 3.8.2, 3.8.1, 3.8.0, 3.7.4--3.6.2 |
88 | | - # 3.9.2: see above |
89 | | - # 3.9.0 and below: no masterfiles listed, and unlisted analogous URLs seemingly do not exist |
90 | | - continue |
91 | | - |
92 | | - download_urls[version] = masterfiles_data["URL"] |
93 | | - reported_checksums[version] = masterfiles_data["SHA256"] |
94 | | - |
95 | | - return download_urls, reported_checksums |
96 | | - |
97 | | - |
98 | | -def get_all_download_urls(min_version=None): |
99 | | - download_urls, reported_checksums = get_download_urls_enterprise(min_version) |
100 | | - |
101 | | - for version in COMMUNITY_ONLY_VERSIONS: |
102 | | - if version_is_at_least(version, min_version): |
103 | | - download_urls[version] = HARDCODED_URLS[version] |
104 | | - reported_checksums[version] = HARDCODED_CHECKSUMS[version] |
105 | | - |
106 | | - return download_urls, reported_checksums |
107 | | - |
108 | | - |
109 | 36 | def get_single_download_url(version): |
110 | 37 | if version in HARDCODED_VERSIONS: |
111 | 38 | download_url = HARDCODED_URLS[version] |
@@ -177,16 +104,6 @@ def download_versions_from_urls(download_path, download_urls, reported_checksums |
177 | 104 | return downloaded_versions |
178 | 105 |
|
179 | 106 |
|
180 | | -def download_all_versions(download_path, min_version=None): |
181 | | - download_urls, reported_checksums = get_all_download_urls(min_version) |
182 | | - |
183 | | - downloaded_versions = download_versions_from_urls( |
184 | | - download_path, download_urls, reported_checksums |
185 | | - ) |
186 | | - |
187 | | - return downloaded_versions |
188 | | - |
189 | | - |
190 | 107 | def download_single_version(download_path, version): |
191 | 108 | download_url, reported_checksum = get_single_download_url(version) |
192 | 109 |
|
|
0 commit comments