summary refs log tree commit diff
diff options
context:
space:
mode:
authorArun Isaac2024-08-22 17:22:01 +0100
committerArun Isaac2024-08-22 17:24:43 +0100
commitbec69bbea36df14b39d8a0332322438fafee49b7 (patch)
tree6e14a8817ab0aeff785c460b655934ce2fa3d427
parent62e8278a3dc742b37080d719329b9aa4426cee2d (diff)
downloadravanan-bec69bbea36df14b39d8a0332322438fafee49b7.tar.gz
ravanan-bec69bbea36df14b39d8a0332322438fafee49b7.tar.lz
ravanan-bec69bbea36df14b39d8a0332322438fafee49b7.zip
bin: Add --help flag.
* bin/ravanan (print-usage): New function.
(main): Use print-usage.
-rwxr-xr-xbin/ravanan34
1 files changed, 32 insertions, 2 deletions
diff --git a/bin/ravanan b/bin/ravanan
index d823173..2072a51 100755
--- a/bin/ravanan
+++ b/bin/ravanan
@@ -54,14 +54,41 @@ exec guile --no-auto-compile -e main -s "$0" "$@"
                   (acons 'slurm-api-endpoint arg result)))
         (option (list "slurm-jwt") #t #f
                 (lambda (opt name arg result)
-                  (acons 'slurm-jwt arg result)))))
+                  (acons 'slurm-jwt arg result)))
+        (option (list "help") #f #t
+                (lambda (opt name arg result)
+                  (acons 'help #t result)))))
 
 (define (invalid-option opt name arg result)
   (error "Invalid option" name))
 
+(define (print-usage program)
+  (format (current-error-port)
+          "Usage: ~a [OPTIONS] CWL-WORKFLOW INPUTS
+Run CWL-WORKFLOW with INPUTS.
+
+  --batch-system=BATCH-SYSTEM    batch system to run jobs on;
+                                 Supported batch systems are single-machine (default) and slurm-api
+  --scratch=SCRATCH              path to scratch area on worker nodes
+                                 scratch need not be shared
+                                 (default: current directory with the single-machine batch system)
+  --store=STORE                  path to shared store to write results into
+
+Guix options:
+
+  --guix-daemon-socket=GUIX_DAEMON_SOCKET    guix daemon to connect to
+  --guix-manifest=GUIX_MANIFEST              guix manifest to run jobs with
+
+Slurm API batch system options:
+
+  --slurm-api-endpoint=SLURM-API-ENDPOINT    slurm API endpoint to connect to
+  --slurm-jwt=SLURM-JWT                      slurm JWT to authenticate with
+"
+          program))
+
 (define main
   (match-lambda
-    ((_ args ...)
+    ((program args ...)
      (let ((args (args-fold args
                             %options
                             invalid-option
@@ -75,6 +102,9 @@ exec guile --no-auto-compile -e main -s "$0" "$@"
                               (slurm-api-endpoint . ,(build-uri 'http
                                                                 #:host "localhost"
                                                                 #:port 6820))))))
+       (when (assq-ref args 'help)
+         (print-usage program)
+         (exit #t))
        ;; Check for required arguments.
        (unless (assq-ref args 'store)
          (error "ravanan store not specified"))