aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Isaac2025-06-29 00:09:01 +0100
committerArun Isaac2025-06-29 00:09:01 +0100
commitc3d7dabe1401e9f98620e3eb7913eac85f7a1e21 (patch)
tree39fd7aada15e2f895b1ecec129c48addeccb4a08
parent76912ec25c03d110b109c024c59992fef33cab12 (diff)
downloadravanan-c3d7dabe1401e9f98620e3eb7913eac85f7a1e21.tar.gz
ravanan-c3d7dabe1401e9f98620e3eb7913eac85f7a1e21.tar.lz
ravanan-c3d7dabe1401e9f98620e3eb7913eac85f7a1e21.zip
reader: Read manifest files with respect to the workflow file.
* ravanan/reader.scm (normalize-software-requirement): New function. (normalize-requirements): Use normalize-software-requirement.
-rw-r--r--ravanan/reader.scm21
1 files changed, 17 insertions, 4 deletions
diff --git a/ravanan/reader.scm b/ravanan/reader.scm
index 344ff7f..fd959de 100644
--- a/ravanan/reader.scm
+++ b/ravanan/reader.scm
@@ -106,13 +106,26 @@ each association list of the returned vector of association lists. If
(assoc-ref env-var-requirement "envDef")
"envName" "envValue"))))
+(define (normalize-software-requirement software-requirement)
+ (maybe-assoc-set software-requirement
+ ;; Canonicalize manifest file path so that we look it up with respect to the
+ ;; path of the workflow file.
+ (cons "manifest"
+ (maybe-bind (maybe-assoc-ref (just software-requirement)
+ "manifest")
+ (compose just canonicalize-path)))))
+
(define (normalize-requirements maybe-requirements)
(maybe-let* ((requirements maybe-requirements))
(just (vector-map (lambda (requirement)
- (if (string=? (assoc-ref requirement "class")
- "EnvVarRequirement")
- (normalize-env-var-requirement requirement)
- requirement))
+ (let ((class (assoc-ref requirement "class")))
+ (cond
+ ((string=? class "EnvVarRequirement")
+ (normalize-env-var-requirement requirement))
+ ((string=? class "SoftwareRequirement")
+ (normalize-software-requirement requirement))
+ (else
+ requirement))))
(coerce-alist->vector requirements "class")))))
(define (normalize-secondary-files secondary-files default-required)