from optinist.api.dir_path import DIRPATH
from optinist.api.utils.filepath_creater import join_filepath
from optinist.api.snakemake.smk_utils import SmkUtils
from optinist.api.edit_ROI import EditRoiUtils, ACTION
from optinist.routers.model import FILETYPE

configfile: join_filepath([DIRPATH.ROOT_DIR, 'config.yaml'])

if config.get('type') == ACTION.EDIT_ROI:
    rule edit_ROI:
        conda:
            EditRoiUtils.conda(config)
        script:
            f"{DIRPATH.ROOT_DIR}/api/rules/edit_ROI.py"
else:
    rule all:
        input: [join_filepath([DIRPATH.OUTPUT_DIR, x]) for x in config["last_output"]]


    for rule_name, details in config["rules"].items():
        if details["type"] in [FILETYPE.IMAGE, FILETYPE.CSV, FILETYPE.BEHAVIOR, FILETYPE.HDF5]:
            rule:
                input:
                    SmkUtils.input(details)
                output:
                    SmkUtils.output(details)
                params:
                    name = details
                script:
                    f"{DIRPATH.ROOT_DIR}/api/rules/data.py"
        else:
            rule:
                input:
                    SmkUtils.input(details)
                output:
                    SmkUtils.output(details)
                params:
                    name = details
                conda:
                    SmkUtils.conda(details)
                script:
                    f"{DIRPATH.ROOT_DIR}/api/rules/func.py"
