@@ -25,6 +25,7 @@ def __init__(
2525 report : r .Report ,
2626 report_type : r .ReportType ,
2727 quarto_checks : bool = False ,
28+ output_dir : Optional [Path ] = BASE_DIR ,
2829 static_dir : str = STATIC_FILES_DIR ,
2930 ):
3031 """_summary_
@@ -44,7 +45,7 @@ def __init__(
4445 super ().__init__ (report = report , report_type = report_type )
4546 self .quarto_checks = quarto_checks
4647 self .static_dir = static_dir
47- self .output_dir = self . BASE_DIR # set default output directory
48+ self .output_dir = output_dir . resolve (). absolute ()
4849 # self.BUNDLED_EXECUTION = False
4950 self .quarto_path = "quarto"
5051 # self.env_vars = os.environ.copy()
@@ -73,19 +74,22 @@ def __init__(
7374 r .ComponentType .HTML : self ._generate_html_content ,
7475 }
7576
76- def generate_report (self , output_dir : Path = BASE_DIR ) -> None :
77+ def generate_report (self , output_dir : Optional [ Path ] = None ) -> None :
7778 """
7879 Generates the qmd file of the quarto report. It creates code for rendering each section and its subsections with all components.
7980
8081 Parameters
8182 ----------
8283 output_dir : Path, optional
83- The folder where the generated report files will be saved (default is BASE_DIR).
84+ The folder where the generated report files will be saved.
85+ Will overwrite value set on initialization of QuartoReportView.
8486 """
87+ if output_dir is not None :
88+ self .output_dir = Path (output_dir ).resolve ().absolute ()
89+
8590 self .report .logger .debug (
86- f"Generating '{ self .report_type } ' report in directory: '{ output_dir } '"
91+ f"Generating '{ self .report_type } ' report in directory: '{ self . output_dir } '"
8792 )
88- self .output_dir = output_dir .resolve ().absolute ()
8993 # Create the output folder
9094 if create_folder (self .output_dir , is_nested = True ):
9195 self .report .logger .debug (f"Created output directory: '{ self .output_dir } '" )
@@ -248,7 +252,7 @@ def generate_report(self, output_dir: Path = BASE_DIR) -> None:
248252 )
249253 raise
250254
251- def run_report (self , output_dir : str = BASE_DIR ) -> None :
255+ def run_report (self , output_dir : Optional [ Path ] = None ) -> None :
252256 """
253257 Runs the generated quarto report.
254258
@@ -258,8 +262,10 @@ def run_report(self, output_dir: str = BASE_DIR) -> None:
258262 The folder where the report was generated (default is 'sections').
259263 """
260264 # from quarto_cli import run_quarto # entrypoint of quarto-cli not in module?
265+ if output_dir is not None :
266+ self .output_dir = Path (output_dir ).resolve ().absolute ()
261267
262- file_path_to_qmd = Path (output_dir ) / f"{ self .BASE_DIR } .qmd"
268+ file_path_to_qmd = Path (self . output_dir ) / f"{ self .BASE_DIR } .qmd"
263269 args = [self .quarto_path , "render" , str (file_path_to_qmd )]
264270 self .report .logger .info (
265271 f"Running '{ self .report .title } ' '{ self .report_type } ' report with { args !r} "
0 commit comments