From 9bf0dad2f40807f4fec673670cd40ba4107bc069 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Thu, 17 Apr 2025 19:56:31 +0100 Subject: command-line-tool: Abstract out handling of SecondaryFile pattern. * ravanan/command-line-tool.scm (build-command-line-tool-script)[secondary-path]: New function. [capture-secondary-file]: Use secondary-path. --- ravanan/command-line-tool.scm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ravanan/command-line-tool.scm b/ravanan/command-line-tool.scm index 51f14c2..cb309a0 100644 --- a/ravanan/command-line-tool.scm +++ b/ravanan/command-line-tool.scm @@ -890,16 +890,20 @@ same as in @code{run-workflow} from @code{(ravanan workflow)}." ("checksum" . ,(or (assoc-ref value "checksum") (checksum path)))))) + (define (secondary-path path secondary-file) + "Derive path to @var{secondary-file} from primary @var{path}." + (let ((pattern (assoc-ref* secondary-file "pattern"))) + ;; TODO: Implement ? and ^ characters in SecondaryFileSchema + ;; DSL. + (string-append path pattern))) + (define (capture-secondary-file path secondary-file workflow-output-directory) "Capture @var{secondary-file} for primary @var{path} and return its canonicalized value. If @var{required} is @code{#t} and no such secondary file is found, error out. @var{workflow-output-directory} is path to the output directory of the workflow." - (let* ((pattern (assoc-ref* secondary-file "pattern")) - ;; TODO: Implement caret characters in - ;; SecondaryFileSchema DSL. - (secondary-file-path (string-append path pattern)) + (let* ((secondary-file-path (secondary-path path pattern)) (secondary-file-value (and (file-exists? secondary-file-path) (copy-file-value (canonicalize-file-value -- cgit v1.2.3