From 2bceb7f266f71cd85f9b328de02797eb457da17c Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Mon, 5 Sep 2016 23:49:22 -0400 Subject: snakemake-check-target: Recognize protected items With 33a7c90 (snakemake-check-target: Adjust for upstream output, 2016-09-01), write-protected targets were no longer considered valid targets. --- snakemake.el | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'snakemake.el') diff --git a/snakemake.el b/snakemake.el index 9a93f9e..9ec7b42 100644 --- a/snakemake.el +++ b/snakemake.el @@ -258,15 +258,24 @@ The file list is determined by the output of (regexp-opt (list "MissingRuleException" "RuleException"))) +(defconst snakemake-valid-target-re "ProtectedOutputException" + "Regular expression indicating valid target. +If this matches, the target will be considered valid even if the +exit status is non-zero.") + (defun snakemake-check-target (target &optional directory) "Return non-nil if TARGET is a valid target for DIRECTORY's Snakefile." (snakemake-with-cache directory (target) (with-temp-buffer - (when (= 0 (snakemake-insert-output "--quiet" "--dryrun" target)) + (let ((ex-code (snakemake-insert-output "--quiet" "--dryrun" target))) (goto-char (point-min)) - ;; Lean towards misclassifying targets as valid rather than - ;; silently dropping valid targets as invalid. - (not (re-search-forward snakemake-invalid-target-re nil t)))))) + (cond + ((re-search-forward snakemake-valid-target-re nil t)) + ((and (= ex-code 0) + ;; Lean towards misclassifying targets as valid rather + ;; than silently dropping valid targets as invalid. + (not (re-search-forward snakemake-invalid-target-re + nil t))))))))) (declare-function org-element-context "org-element") (declare-function org-element-property "org-element") -- cgit v1.2.3