Test vars and overrides

This commit is contained in:
Ray Miller 2025-01-06 22:08:33 +00:00
parent 12c45b628c
commit af16ee29b6
Signed by: ray
GPG key ID: 043F786C4CD681B8
3 changed files with 15 additions and 19 deletions

View file

@ -19,6 +19,7 @@
(define* (install-directory path #:key owner group mode)
(lambda (conn)
(format #t "install-directory ~a~%" path)
(connection-must conn "install" (chain-when
'("--directory")
(owner (append _ `("--owner" ,owner)))
@ -45,6 +46,7 @@
(when (not (= 1 (length (filter identity (list content local-src remote-src)))))
(error "exactly one of #:content, #:local-src, or #:remote-src is required"))
(lambda (conn)
(format #t "install-file ~a~%" path)
(let ((remote-src (cond
(remote-src remote-src)
(local-src (call-with-input-file local-src (upload-tmp-file conn)))

View file

@ -21,6 +21,7 @@
(define* (context #:key scratch-dir init-vars)
(make-context scratch-dir init-vars))
;; TODO: (resolve-content-refs ctx (lambda (x) x)) fails
(define-syntax resolve-context-refs
(syntax-rules ($)
((_ ctx ($ x))

View file

@ -1,38 +1,31 @@
(use-modules
(ice-9 filesystem)
(ordo connection)
(ordo action filesystem)
(ordo play)
(ordo task)
(ordo handler))
;; TODO: Consider how vars might be used in task args Currently a task argument
;; can be a context refrence, for example we could write:
;;
;; (install-directory (context-ref 'base-dir))
;;
;; but there's no way to nest these, so we this will not work:
;;
;; (install-file (file-name-join (context-ref 'base-dir) "foo"))
;;
;; Maybe we could implement something like:
;;
;; (install-file (context-fn (file-name-join (context-ref 'base-dir) "foo")))
;;
;; where context-fn is some syntax that returns (lambda (ctx) ...)
(define test-play
(play "Test play"
#:connection (local-connection)
#:vars '((base-dir . "/home/ray/ordo-test"))
#:tasks (list
(task "Override base dir"
(const "/home/ray/ordo-test-again")
#:register 'base-dir)
(task "Create test directory"
(install-directory "/home/ray/ordo-test"))
(install-directory ($ 'base-dir)))
(task "Create test file from string content"
(install-file "/home/ray/ordo-test/foo" #:content "Hello, world!\n"))
(install-file (file-name-join* ($ 'base-dir) "foo")
#:content "Hello, world!\n"))
(task "Create test file from local source"
(install-file "/home/ray/ordo-test/bar" #:local-src "/home/ray/ordo-test/foo")
(install-file (file-name-join* ($ 'base-dir) "bar")
#:local-src (file-name-join* ($ 'base-dir) "foo"))
#:triggers '(fritz))
(task "Create test file from remote source"
(install-file "/home/ray/ordo-test/baz" #:remote-src "/home/ray/ordo-test/bar")
(install-file (file-name-join* ($ 'base-dir) "baz")
#:remote-src (file-name-join* ($ 'base-dir) "bar"))
#:triggers '(frobnicate)))
#:handlers `((frobnicate . ,(handler "Frobnicate" (const #t)))
(fritz . ,(handler "Fritz" (const #t)))