from modules.software_base import WorkflowRunnerBase
import os

class PMDtoolsRunner(WorkflowRunnerBase):
    def __init__(self, logger, manifest_list, input_path, output_path, additional_args, threads=1, stepname="", mode=None):
        super().__init__(
            logger=logger,
            manifest_list=manifest_list,
            input_path=input_path,
            output_path=output_path,
            additional_args=additional_args,
            threads=threads,
            stepname=stepname,
            software_name="runpmd.py",
            unneeded_args=["-i", "--input", "-o", "--output"],
            output_type="bam",
            shell=False,
            mode=mode
        )

    def find_input_files(self, prev_step_files):
        self.input_file_list.append({
            "id": None,
            "input1": None,
            "input2": None,
            "output1": None,
            "output2": None,
        })
    
        if self.leaf:
            return prev_step_files
        else:
            return None

    def build_command_queue(self):
        cmd = [
            self.software_name,
            f"--threads {self.threads}",
            f"--input {self.input_path}",
            f"--output {self.output_path}",
            f"{self.additional_args}"
        ]

        self.logger.info(f"{cmd}")
        self.command_queue.append(" ".join(cmd))
