#!/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)