#!/usr/bin/env python3
"""Print all concrete file targets.

Usage: snakemake-file-targets [SNAKEFILE]
"""
import sys
from snakemake.workflow import Workflow

if len(sys.argv) == 1:
    snakefile = "Snakefile"
elif len(sys.argv) == 2 and sys.argv[1] not in ["-h", "--help"]:
    snakefile = sys.argv[1]
else:
    sys.exit(__doc__)

workflow = Workflow(snakefile=snakefile)
workflow.include(snakefile)

for rule in workflow.rules:
    for fname in rule.output:
        if not callable(fname) and not fname.contains_wildcard():
            try:
                print(fname)
            except BrokenPipeError:
                sys.exit(0)
