
# Config
configfile: os.path.join(workflow.basedir, '../', 'config', 'config.yaml')
configfile: os.path.join(workflow.basedir, '../', 'config', 'system_config.yaml')
resources = config["resources"]
config = config["koverage"]


# Rules
include: os.path.join("rules", "preflight.smk")
include: os.path.join("rules", "combine_refs.smk")
include: os.path.join("rules", "coverage.smk")
include: os.path.join("rules", "kmer_coverage.smk")
include: os.path.join("rules", "coverm.smk")
include: os.path.join("rules", "reports.smk")


# Mark target rules
target_rules = []
def targetRule(fn):
    assert fn.__name__.startswith('__')
    target_rules.append(fn.__name__[2:])
    return fn


# Make targets
@targetRule
rule map:
    input:
        targets["pafs"],
        targets["coverage"],
        targets["reports"],


@targetRule
rule kmer:
    input:
        targets["kmercov"],
        targets["reports"],


@targetRule
rule coverm:
    input:
        targets["coverm"],
        targets["reports"],


@targetRule
rule build_envs:
    input:
        targets["envs"]


@targetRule
rule print_targets:
    run:
        print("\nTop level rules are: \n", file=sys.stderr)
        print("* " + "\n* ".join(target_rules) + "\n\n", file=sys.stderr)
