ordo/modules/ordo/playbook.scm

31 lines
806 B
Scheme

(define-module (ordo playbook)
#:use-module (srfi srfi-9)
#:use-module (logging logger)
#:use-module (ordo play)
#:use-module (ordo vars)
#:export (playbook
playbook?
playbook-name
playbook-vars
playbook-plays
run-playbook))
(define-record-type <playbook>
(make-playbook name vars plays)
playbook?
(name playbook-name)
(vars playbook-vars)
(plays playbook-plays))
(define* (playbook name #:key (vars '()) . plays)
(make-playbook name vars plays))
(define (run-playbook pb)
(log-msg 'NOTICE "Running playbook: " (playbook-name pb))
(dynamic-wind
(lambda ()
(init-playbook-vars! (playbook-vars pb)))
(lambda ()
(for-each run-play (playbook-plays pb)))
(lambda ()
(reset-playbook-vars!))))