1
1
#!/usr/bin/env python3
2
-
3
2
#
4
- # Copyright (c) 2023 Project CHIP Authors
3
+ # Copyright (c) 2024 Project CHIP Authors
5
4
#
6
5
# Licensed under the Apache License, Version 2.0 (the "License");
7
6
# you may not use this file except in compliance with the License.
15
14
# See the License for the specific language governing permissions and
16
15
# limitations under the License.
17
16
#
18
-
17
+ #
19
18
# The script parses integrations/docker/images/chip-build/Dockerfile file
20
19
# from the Matter repository and looks for ENV ZAP_VERSION= string to find
21
20
# currently recommended ZAP version. After that the package matching this version
@@ -86,11 +85,11 @@ def download_recommended_zap_package(version, package_name, location):
86
85
month = f'{ int (splitted_version [1 ]):02d} '
87
86
day = f'{ int (splitted_version [2 ]):02d} '
88
87
merged_version = f"{ splitted_version [0 ]} .{ month } .{ day } "
89
-
90
88
url = f"https://github.com/project-chip/zap/releases/download/v{ merged_version } -nightly/{ package_name } .zip"
91
89
print (f"Downloading { url } into { os .path .join (location , f'{ package_name } .zip' )} " )
92
90
wget .download (url , out = location )
93
91
print ("\n " )
92
+
94
93
except Exception as e :
95
94
raise RuntimeError ("Invalid URL to download ZAP tool package {}" .format (e ))
96
95
@@ -102,6 +101,7 @@ def clear_old_artifacts(location, overwrite):
102
101
consent = input ("The ZAP directory already exists in this location. Do you agree to overwrite it? Yes[y]/No[n]:" )
103
102
if consent .lower () != 'yes' and consent .lower () != 'y' :
104
103
raise RuntimeError ("Couldn't download ZAP package, as the file already exists in this location." )
104
+
105
105
shutil .rmtree (location )
106
106
107
107
@@ -118,19 +118,27 @@ def set_executable(location, package_name, filename):
118
118
119
119
120
120
def unzip_zap_package (location , package_name ):
121
+ package = location + f"/{ package_name } .zip"
122
+ destination = location + "/" + package_name
123
+
121
124
try :
122
- zip = ZipFile (os .path .join (location , f"{ package_name } .zip" ))
123
- zip .extractall (os .path .join (location , package_name ))
124
- zip .close ()
125
+ if (platform .system () == 'Darwin' ):
126
+ subprocess .run (['unzip' , package , '-d' , destination ], stdout = subprocess .PIPE )
127
+ else :
128
+ zip = ZipFile (os .path .join (location , f"{ package_name } .zip" ))
129
+ zip .extractall (os .path .join (location , package_name ))
130
+ zip .close ()
131
+
125
132
except Exception as e :
126
133
raise RuntimeError ("Encountered problem when trying to unzip the ZAP tool package. {}" .format (e ))
134
+
127
135
finally :
128
136
remove_zip (location , package_name )
129
137
130
138
131
139
def print_paths_warning (paths_to_print ):
132
- messages = ["Please add the following location(s) to the system PATH:" ] + paths_to_print
133
140
141
+ messages = ["Please add the following location(s) to the system PATH:" ] + paths_to_print
134
142
longest_message = max (messages , key = len )
135
143
136
144
for item in range (len (messages )):
@@ -160,6 +168,7 @@ def install_zap_package(version, location, overwrite):
160
168
zap_cli_executable = 'zap-cli'
161
169
else :
162
170
raise RuntimeError (f"Couldn't find the proper ZAP tool package for the currently used operating system: { current_os } " )
171
+
163
172
clear_old_artifacts (os .path .join (location , package ), overwrite )
164
173
download_recommended_zap_package (version , package , location )
165
174
unzip_zap_package (location , package )
@@ -175,12 +184,9 @@ def install_zap_package(version, location, overwrite):
175
184
176
185
177
186
def main ():
178
- parser = argparse .ArgumentParser (
179
- description = 'Script helping to download the ZAP tool in the currently recommended revision.' )
180
- parser .add_argument (
181
- "-l" , "--location" , help = "Path to the location that should be used for storing ZAP tool package." , type = str , required = True )
182
- parser .add_argument (
183
- "-o" , "--overwrite" , help = "Overwrite files without asking, in case they already exist in given location" , action = "store_true" )
187
+ parser = argparse .ArgumentParser (description = 'Script helping to download the ZAP tool in the currently recommended revision.' )
188
+ parser .add_argument ("-l" , "--location" , help = "Path to the location that should be used for storing ZAP tool package." , type = str , required = True )
189
+ parser .add_argument ("-o" , "--overwrite" , help = "Overwrite files without asking, in case they already exist in given location" , action = "store_true" )
184
190
args = parser .parse_args ()
185
191
186
192
location = os .path .abspath (args .location )
@@ -198,4 +204,5 @@ def main():
198
204
199
205
200
206
if __name__ == '__main__' :
207
+
201
208
main ()
0 commit comments