#!/usr/bin/env python
from reprox import core, submit_jobs


def main(targets: list, submit_kwargs: dict) -> None:
    """
    Input a list of targets to process with the options
    specified in submit_kwargs. Assumes we have first
    determined which data to process with `run_determine_data`

    :param targets: list of targets to process
    :param submit_kwargs: passed to submit_jobs.submit_jobs
    :return: None
    """
    container_tag = core.config['processing']['container_tag']
    defaults = dict(
        context=core.config['context']['context'],
        package=core.config['context']['package'],
        ram=int(core.config['processing']['ram']),
        cpus_per_task=int(core.config['processing']['cpus_per_job']),
        container=f'xenonnt-{container_tag}.simg',
    )
    for option, default in defaults.items():
        submit_kwargs.setdefault(option, default)

    submit_jobs.submit_jobs(targets=targets,
                            submit_kwargs=submit_kwargs,
                            clear_logs=args.clear_logs,
                            )


if __name__ == '__main__':
    args = core.parse_args('Submit processing jobs',
                           include_find_args=False,
                           include_processing_args=True,
                           include_workflow_args=False,
                           )
    core.log_versions()
    main(targets=args.targets,
         submit_kwargs=dict(
             context=args.context,
             package=args.package,
             ram=int(args.ram),
             cpus_per_task=int(args.cpu),
             container=f'xenonnt-{args.tag}.simg',
             include_config=args.context_kwargs,
             context_config_kwargs=args.context_config_kwargs,
         ))
    core.log.info('Job submission done done, bye bye')
