@@ -10,6 +10,7 @@ class CodeGenerator:
1010 def __init__ (self , templates_dir : str = "./templates" , dist_dir : str = "./dist" ):
1111 self .templates_dir = Path (templates_dir )
1212 self .dist_dir = Path (dist_dir )
13+ self .dist_dir .mkdir (parents = True , exist_ok = True )
1314 self .rendered_code = {}
1415 self .available_archive_formats = [x [0 ] for x in shutil .get_archive_formats ()[::- 1 ]]
1516
@@ -28,7 +29,7 @@ def render_templates(self, template_name: str, config: dict):
2829 self .rendered_code [fname ] = code
2930 yield fname , code
3031
31- def make_and_write (self , template_name : str ):
32+ def make_and_write (self , template_name : str , dest_path : Path ):
3233 """Make the directories first and write to the files"""
3334 for p in (self .templates_dir / template_name ).rglob ("*" ):
3435 if not p .stem .startswith ("_" ) and p .is_dir ():
@@ -39,20 +40,20 @@ def make_and_write(self, template_name: str):
3940 else :
4041 p = template_name
4142
42- if not (self . dist_dir / p ).is_dir ():
43- (self . dist_dir / p ).mkdir (parents = True , exist_ok = True )
43+ if not (dest_path / p ).is_dir ():
44+ (dest_path / p ).mkdir (parents = True , exist_ok = True )
4445
4546 for fname , code in self .rendered_code .items ():
46- (self . dist_dir / template_name / fname ).write_text (code )
47+ (dest_path / template_name / fname ).write_text (code )
4748
48- def make_archive (self , template_name , archive_format ):
49+ def make_archive (self , template_name , archive_format , dest_path ):
4950 """Creates dist dir with generated code, then makes the archive."""
50-
51- self .make_and_write (template_name )
51+ self .make_and_write (template_name , dest_path )
5252 archive_fname = shutil .make_archive (
5353 base_name = template_name ,
54- root_dir = self . dist_dir ,
54+ root_dir = dest_path ,
5555 format = archive_format ,
5656 base_dir = template_name ,
5757 )
58- return shutil .move (archive_fname , self .dist_dir / archive_fname .split ("/" )[- 1 ])
58+ archive_fname = shutil .move (archive_fname , dest_path / archive_fname .split ("/" )[- 1 ])
59+ return archive_fname
0 commit comments