import yaml
import os
import glob

"""Parse config"""
configfile: os.path.join(workflow.basedir, "..", "config", "config.yaml")

"""Rules"""
include: os.path.join("rules", "1.preflight.smk")
include: os.path.join("rules", "2.targets.smk")
include: os.path.join("rules", "3.qc_qa.smk")
if config["args"]["no_medaka"] is False:
    include: os.path.join("rules", "4.assembly.smk")
else:
    include: os.path.join("rules", "4.assembly_no_medaka.smk")
include: os.path.join("rules", "5.components.smk")
include: os.path.join("rules", "5.viralverify.smk")
include: os.path.join("rules", "5.checkv.smk")
include: os.path.join("rules", "6.stat_join.smk")
include: os.path.join("rules", "6.phage_genome.smk")
include: os.path.join("rules", "7.phageterm.smk")
include: os.path.join("rules", "7.pharokka.smk")
include: os.path.join("rules", "8.phold.smk")
include: os.path.join("rules", "9.phynteny.smk")
include: os.path.join("rules", "10.trees.smk")
include: os.path.join("rules", "11.final-reporting.smk")

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

@targetRule
rule all:
    input:
        targets['qc'],
        targets['assemble'],
        targets['annotate'],
        targets['phylogeny']

@targetRule
rule qc:
    input:
        targets['qc']


@targetRule
rule assemble:
    input:
        targets['assemble']

@targetRule
rule annotate:
    input:
        targets['annotate']

@targetRule
rule phylogeny:
    input:
        targets['phylogeny']
