ordo/modules/ordo/interceptor/install-file.scm

28 lines
1.3 KiB
Scheme

(define-module (ordo interceptor install-file)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-145)
#:use-module (ordo interceptor)
#:use-module (ordo action filesystem)
#:export (install-file))
(define* (install-file name #:key path owner group mode content
local-src remote-src backup? register)
(assume path "install path is required")
(assume (or (not register) (symbol? register)) "register should be a symbol" register)
(assume (= 1 (length (filter identity (list content local-src remote-src))))
"exactly one of content, local-src, or remote-src is required")
(interceptor
name
#:enter (lambda (ctx)
(let ((path (expand-vars ctx path)))
(fs:install-file (context-connection ctx)
path
#:owner (expand-vars ctx owner)
#:group (expand-vars ctx group)
#:mode (expand-vars ctx mode)
#:content (expand-vars ctx content)
#:local-src (expand-vars ctx local-src)
#:remote-src (expand-vars ctx remote-src)
#:backup? (expand-vars ctx backup?))
(when register
(var-set! ctx register path))))))