31 lines
806 B
Scheme
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!))))
|