about summary refs log tree commit diff
diff options
context:
space:
mode:
authorArun Isaac2025-06-05 21:45:48 +0100
committerArun Isaac2025-06-26 14:50:28 +0100
commitfd46885b7c831e39c813d3e9709b6b218fd32d5c (patch)
tree0ef8ea1ea9cd14db375b4122b69b67cc2b845452
parent175edbdeebae97eb784b8d2223c2392c9a5d250a (diff)
downloadravanan-fd46885b7c831e39c813d3e9709b6b218fd32d5c.tar.gz
ravanan-fd46885b7c831e39c813d3e9709b6b218fd32d5c.tar.lz
ravanan-fd46885b7c831e39c813d3e9709b6b218fd32d5c.zip
command-line-tool: Define environment only once.
* ravanan/command-line-tool.scm (run-command-line-tool): Define
environment only once.
-rw-r--r--ravanan/command-line-tool.scm62
1 files changed, 29 insertions, 33 deletions
diff --git a/ravanan/command-line-tool.scm b/ravanan/command-line-tool.scm
index 895898a..0103441 100644
--- a/ravanan/command-line-tool.scm
+++ b/ravanan/command-line-tool.scm
@@ -401,39 +401,35 @@ state-monadic job state object.
           (when (file-exists? store-files-directory)
             (delete-file-recursively store-files-directory))
           (mkdir store-files-directory)
-          (cond
-           ((eq? batch-system 'single-machine)
-            (state-let* ((success? (single-machine:submit-job
-                                    `(("WORKFLOW_OUTPUT_DIRECTORY" .
-                                       ,store-files-directory)
-                                      ("WORKFLOW_OUTPUT_DATA_FILE" .
-                                       ,store-data-file))
-                                    stdout-file
-                                    stderr-file
-                                    script)))
-              (state-return (single-machine-job-state script success?))))
-           ((slurm-api-batch-system? batch-system)
-            (state-let* ((job-id
-                          (slurm:submit-job `(("WORKFLOW_OUTPUT_DIRECTORY" .
-                                               ,store-files-directory)
-                                              ("WORKFLOW_OUTPUT_DATA_FILE" .
-                                               ,store-data-file))
-                                            stdout-file
-                                            stderr-file
-                                            cpus
-                                            name
-                                            script
-                                            #:api-endpoint (slurm-api-batch-system-endpoint batch-system)
-                                            #:jwt (slurm-api-batch-system-jwt batch-system)
-                                            #:partition (slurm-api-batch-system-partition batch-system)
-                                            #:nice (slurm-api-batch-system-nice batch-system))))
-              (format (current-error-port)
-                      "~a submitted as job ID ~a~%"
-                      script
-                      job-id)
-              (state-return (slurm-job-state script job-id))))
-           (else
-            (assertion-violation batch-system "Invalid batch system")))))))
+          (let ((environment
+                 `(("WORKFLOW_OUTPUT_DIRECTORY" . ,store-files-directory)
+                   ("WORKFLOW_OUTPUT_DATA_FILE" . ,store-data-file))))
+            (cond
+             ((eq? batch-system 'single-machine)
+              (state-let* ((success? (single-machine:submit-job environment
+                                                                stdout-file
+                                                                stderr-file
+                                                                script)))
+                (state-return (single-machine-job-state script success?))))
+             ((slurm-api-batch-system? batch-system)
+              (state-let* ((job-id
+                            (slurm:submit-job environment
+                                              stdout-file
+                                              stderr-file
+                                              cpus
+                                              name
+                                              script
+                                              #:api-endpoint (slurm-api-batch-system-endpoint batch-system)
+                                              #:jwt (slurm-api-batch-system-jwt batch-system)
+                                              #:partition (slurm-api-batch-system-partition batch-system)
+                                              #:nice (slurm-api-batch-system-nice batch-system))))
+                (format (current-error-port)
+                        "~a submitted as job ID ~a~%"
+                        script
+                        job-id)
+                (state-return (slurm-job-state script job-id))))
+             (else
+              (assertion-violation batch-system "Invalid batch system"))))))))
 
 (define (capture-command-line-tool-output script store)
   "Capture and return output of @code{CommandLineTool} class workflow that ran