28 lines
1.3 KiB
Scheme
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))))))
|