Refactor, implement inventory, add examples
This commit is contained in:
parent
d16df7616f
commit
54b6fd0377
17 changed files with 373 additions and 483 deletions
|
@ -1,42 +1,41 @@
|
|||
(define-module (ordo task)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (srfi srfi-9)
|
||||
#:use-module (logging logger)
|
||||
#:use-module (srfi srfi-1) ; list utils
|
||||
#:use-module (srfi srfi-9) ; records
|
||||
#:use-module (srfi srfi-26) ; cut
|
||||
#:use-module (ordo context)
|
||||
#:use-module (ordo vars)
|
||||
#:export (task
|
||||
task?
|
||||
task-description
|
||||
task-condition
|
||||
task-name
|
||||
task-tags
|
||||
task-action
|
||||
task-register
|
||||
task-condition
|
||||
task-register-play-var
|
||||
task-register-playbook-var
|
||||
task-triggers
|
||||
run-task))
|
||||
|
||||
(define-record-type <task>
|
||||
(make-task description condition action register triggers)
|
||||
(make-task name tags action condition register-play-var register-playbook-var triggers)
|
||||
task?
|
||||
(description task-description)
|
||||
(condition task-condition)
|
||||
(name task-name)
|
||||
(tags task-tags)
|
||||
(action task-action)
|
||||
(register task-register)
|
||||
(condition task-condition)
|
||||
(register-play-var task-register-play-var)
|
||||
(register-playbook-var task-register-playbook-var)
|
||||
(triggers task-triggers))
|
||||
|
||||
(define* (task description action #:key (condition (const #t)) (register #f) (triggers '()))
|
||||
(make-task description condition action register triggers))
|
||||
(define* (task name action #:key (tags '()) (condition (const #t)) (register-play-var #f) (register-playbook-var #f) (triggers '()))
|
||||
(make-task name tags action condition register-play-var register-playbook-var triggers))
|
||||
|
||||
(define (run-task ctx t)
|
||||
(match t
|
||||
(($ <task> description condition action register triggers)
|
||||
(if (not (condition ctx))
|
||||
(log-msg 'NOTICE "Skipping task: " description " (precondition not met)")
|
||||
(begin
|
||||
(log-msg 'NOTICE "Running task: " description)
|
||||
(let ((result (action ctx)))
|
||||
(when register
|
||||
(log-msg 'INFO "Registering result " register)
|
||||
(register-context-var! ctx register result))
|
||||
(when (and triggers (not (null? triggers)))
|
||||
(log-msg 'INFO "Scheduling triggers " triggers)
|
||||
(add-context-triggers! ctx triggers))))))))
|
||||
(define (run-task t c)
|
||||
(when (check-filter-tags (task-tags t))
|
||||
(if (not ((task-condition t) c))
|
||||
(log-msg 'NOTICE "Skipping task: " (task-name t) " (precondition not met)")
|
||||
(begin
|
||||
(log-msg 'NOTICE "Running task: " (task-name t))
|
||||
(let ((result ((task-action t) c)))
|
||||
(when (task-register-play-var t)
|
||||
(set-play-var! (task-register-play-var t) result))
|
||||
(when (task-register-playbook-var t)
|
||||
(set-playbook-var! (task-register-playbook-var t) result))
|
||||
(add-play-triggers! (task-triggers t)))))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue