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