11import json
2+ import requests
23from cfengine_cli .masterfiles .download import (
34 ENTERPRISE_RELEASES_URL ,
45 COMMUNITY_RELEASES_URL ,
@@ -53,10 +54,6 @@ def generate_release_information_impl(
5354 )
5455 generate_vcf_download (DOWNLOAD_PATH , downloaded_versions )
5556
56- generate_release_history ()
57-
58- generate_git_tags_map ()
59-
6057 if check :
6158 print (
6259 "Downloading releases of masterfiles from git (github.com) and generating "
@@ -81,43 +78,37 @@ def generate_release_information_impl(
8178def download_enterprise_releasedata ():
8279 # Downloading releases.json:
8380 try :
84- releases_data = get_json (ENTERPRISE_RELEASES_URL )
81+ return requests . get (ENTERPRISE_RELEASES_URL )
8582
86- except CFBSNetworkError :
83+ except requests . RequestException :
8784 raise CFBSExitError (
8885 "Downloading CFEngine release data failed - check your Wi-Fi / network settings."
8986 )
9087
91- return releases_data
92-
9388
9489def download_community_releasedata ():
9590 # Downloading community/releases.json
9691 try :
97- releases_data = get_json (COMMUNITY_RELEASES_URL )
98-
99- except CFBSNetworkError :
92+ return requests .get (COMMUNITY_RELEASES_URL )
93+ except requests .RequestException :
10094 raise CFBSExitError (
10195 "Downloading CFEngine release data failed - check your Wi-Fi / network settings."
10296 )
10397
104- return releases_data
105-
10698
10799def process_release_type (folder , download_func ):
108100 # Function for processing either community or enterprise releases
109- release_data = download_func ()
110-
111- write_json_pretty (f"./{ folder } /releases.json" , release_data )
101+ releases_path = f"./{ folder } /releases.json"
102+ print (f"\n Downloading release data for { folder } ..." )
103+ response = download_func ()
104+ # Save raw file to preserve exact format from website
105+ save_to_file (releases_path , response .content )
112106
107+ release_data = load_json_from_file (releases_path )
113108 stable_releases = get_stable_releases (release_data )
114-
115109 file_checksums_dict = build_release_history (stable_releases )
116-
117110 write_version_files (stable_releases , folder )
118-
119111 sorted_releases = sort_release_data (file_checksums_dict )
120-
121112 write_json (f"./{ folder } /checksums.json" , sorted_releases )
122113
123114
@@ -192,7 +183,21 @@ def write_version_files(stable_releases, folder):
192183 write_json (f"./{ folder } /versions/{ version } .json" , version_data )
193184
194185
195- def write_json_pretty (path , data ):
196- # Writes release information in same format as on cfengine.com
197- with open (path , "w" , encoding = "utf-8" ) as f :
198- json .dump (data , f , indent = 2 , ensure_ascii = False )
186+ def save_to_file (path , content ):
187+ try :
188+ with open (path , "wb" ) as f :
189+ f .write (content )
190+ print (f"Saved { path } " )
191+
192+ except OSError :
193+ raise CFBSExitError (f"Failed to write file { path } ." )
194+
195+
196+ def load_json_from_file (path ):
197+ # Open saved file and return as dict
198+ try :
199+ with open (path , "r" , encoding = "utf-8" ) as f :
200+ return json .load (f )
201+
202+ except OSError :
203+ raise CFBSExitError (f"Failed to read file { path } ." )
0 commit comments