@@ -80,7 +80,7 @@ def delete_repo(repository_name: str) -> None:
8080 )
8181
8282
83- def main (exercise_folder_name : str ) -> None :
83+ def download_exercise (exercise_folder_name : str ) -> None :
8484 os .makedirs ("test-downloads" , exist_ok = True )
8585 test_folder_name = os .path .join ("test-downloads" , exercise_folder_name )
8686 shutil .rmtree (test_folder_name , ignore_errors = True )
@@ -161,13 +161,42 @@ def main(exercise_folder_name: str) -> None:
161161 namespace ["setup" ]()
162162
163163
164+ def download_hands_on (hands_on_folder_name : str ) -> None :
165+ os .makedirs ("test-downloads" , exist_ok = True )
166+ hands_on_folder = f"hp-{ hands_on_folder_name .replace ('_' , '-' )} "
167+ test_folder_name = os .path .join ("test-downloads" , hands_on_folder )
168+ shutil .rmtree (test_folder_name , ignore_errors = True )
169+ os .makedirs (test_folder_name , exist_ok = True )
170+
171+ namespace : Dict [str , Any ] = {}
172+ with open (
173+ os .path .join ("hands_on" , f"{ hands_on_folder_name } .py" ), "r"
174+ ) as download_script_file :
175+ contents = download_script_file .read ()
176+ exec (contents , namespace )
177+
178+ if "download" in namespace :
179+ os .chdir (test_folder_name )
180+ namespace ["download" ](False )
181+
182+
164183if __name__ == "__main__" :
165184 if len (sys .argv ) != 2 :
166- print ("Missing exercise folder name: ./test-download.py <exercise folder name>" )
167- sys .exit (1 )
168-
169- if not os .path .isdir (sys .argv [1 ]):
170- print ("Invalid exercise folder name" )
185+ print (
186+ "Missing exercise/hands-on folder name: ./test-download.py <exercise/hands-on folder name>"
187+ )
171188 sys .exit (1 )
172189
173- main (sys .argv [1 ])
190+ arg = sys .argv [1 ]
191+ arg = arg .replace ("-" , "_" )
192+
193+ if arg .startswith ("hp_" ):
194+ if not os .path .isfile (os .path .join ("hands_on" , f"{ arg [3 :]} .py" )):
195+ print ("Invalid hands-on folder name" )
196+ sys .exit (1 )
197+ download_hands_on (arg [3 :])
198+ else :
199+ if not os .path .isdir (arg ):
200+ print ("Invalid exercise folder name" )
201+ sys .exit (1 )
202+ download_exercise (arg )
0 commit comments