aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Isaac2025-01-27 15:57:58 +0000
committerArun Isaac2025-01-27 16:42:43 +0000
commitb890ddd5a8cc6a741704b28515311d10be4df0f1 (patch)
treeefcdcfd41d8480eae4451eb25503fc60d859cba0
parentc6a4b01205449c3bfd3ac92894f69b56ffcd0983 (diff)
downloadravanan-b890ddd5a8cc6a741704b28515311d10be4df0f1.tar.gz
ravanan-b890ddd5a8cc6a741704b28515311d10be4df0f1.tar.lz
ravanan-b890ddd5a8cc6a741704b28515311d10be4df0f1.zip
bin: Create store directory when it does not exist.
* bin/ravanan: Import (ravanan store). (main): Create store directory when it does not exist. * ravanan/store.scm (make-store): New public function.
-rwxr-xr-xbin/ravanan2
-rw-r--r--ravanan/store.scm15
2 files changed, 17 insertions, 0 deletions
diff --git a/bin/ravanan b/bin/ravanan
index f1a9e5d..0e0f9e2 100755
--- a/bin/ravanan
+++ b/bin/ravanan
@@ -31,6 +31,7 @@ exec guile --no-auto-compile -e main -s "$0" "$@"
(ravanan batch-system)
(ravanan config)
(ravanan reader)
+ (ravanan store)
(ravanan utils)
(ravanan verbosity)
(ravanan workflow)
@@ -219,6 +220,7 @@ files that have the token in the @verbatim{SLURM_JWT=token} format."
((workflow-file inputs-file)
;; We must not try to compile guix manifest files.
(set! %load-should-auto-compile #f)
+ (make-store (assq-ref args 'store))
(let* ( ;; FIXME: This is a bit of a hack to avoid canonizing remote
;; paths.
(store (if (file-name-absolute? (assq-ref args 'store))
diff --git a/ravanan/store.scm b/ravanan/store.scm
index 9dfc1ec..abe8891 100644
--- a/ravanan/store.scm
+++ b/ravanan/store.scm
@@ -24,6 +24,7 @@
%store-data-directory
%store-logs-directory
+ make-store
script->store-files-directory
script->store-data-file
script->store-stdout-file
@@ -39,6 +40,20 @@
(define %store-logs-directory
"logs")
+(define (make-store store)
+ "Make @var{store} directory and initialize with subdirectories. If @var{store}
+already exists, do nothing."
+ (unless (file-exists? store)
+ (format (current-error-port)
+ "store ~a does not exist; creating it~%"
+ store)
+ (make-directories store)
+ (for-each (lambda (directory)
+ (mkdir (expand-file-name directory store)))
+ (list %store-files-directory
+ %store-data-directory
+ %store-logs-directory))))
+
(define (script->store-files-directory script store)
"Return the store files directory in @var{store} corresponding to @var{script}
path."