aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Meyer <kyle@kyleam.com>2016-02-28 03:39:12 -0500
committerKyle Meyer <kyle@kyleam.com>2016-02-28 03:46:06 -0500
commit6b4ff95035c25d29680f13b34757c4b31a71ed9b (patch)
treeed7b3e9cf525e88e1fb487ebdfd94f8802020bc0
parent89741b59f6392a357b3a21ee21c8de2e536b092a (diff)
downloadsnakemake-mode-6b4ff95035c25d29680f13b34757c4b31a71ed9b.tar.gz
snakemake-all-rules: New command
-rw-r--r--snakemake.el9
-rw-r--r--test-snakemake.el7
2 files changed, 16 insertions, 0 deletions
diff --git a/snakemake.el b/snakemake.el
index 8a985ee..396290a 100644
--- a/snakemake.el
+++ b/snakemake.el
@@ -173,6 +173,15 @@ with DIRECTORY and the Snakefile's modification time."
"Call `snakemake-program' with ARGS and insert output."
(apply #'call-process snakemake-program nil t nil args))
+(defun snakemake-all-rules (&optional directory)
+ "Return list of rules for DIRECTORY's Snakefile."
+ (snakemake-with-cache directory ("all-rules")
+ (split-string
+ (with-temp-buffer
+ (if (= 0 (snakemake-insert-output "--nocolor" "--list"))
+ (buffer-string)
+ (error "Error finding rules"))))))
+
(defun snakemake-rule-targets (&optional directory)
"Return list of target rules for DIRECTORY's Snakefile."
(snakemake-with-cache directory ("target-rules")
diff --git a/test-snakemake.el b/test-snakemake.el
index 03cf1f1..0f83821 100644
--- a/test-snakemake.el
+++ b/test-snakemake.el
@@ -672,6 +672,13 @@ rule abc:
(snakemake-with-temp-dir
(snakemake-rule-targets)))))
+(ert-deftest test-snakemake/all-rules ()
+ "Test `snakemake-all-rules'."
+ (should
+ (equal '("aa" "bb" "cc_wildcards" "dd_subdir")
+ (snakemake-with-temp-dir
+ (snakemake-all-rules)))))
+
(ert-deftest test-snakemake/file-targets ()
"Test `snakemake-file-targets'."
(should