Add a macro to make task definitions more succinct

This commit is contained in:
Ray Miller 2025-01-21 20:56:49 +00:00
parent 7f5ec3ac29
commit 1843544e49
Signed by: ray
GPG key ID: 043F786C4CD681B8
2 changed files with 13 additions and 7 deletions

View file

@ -24,9 +24,16 @@
(register-playbook-var task-register-playbook-var)
(triggers task-triggers))
(define* (task name action #:key (tags '()) (condition (const #t)) (register-play-var #f) (register-playbook-var #f) (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-syntax task
(syntax-rules ()
((task (f args ...) kwargs ...)
(%task (symbol->string 'f) (lambda () (f args ...) kwargs ...)))
((task name (f args ...) kwargs ...)
(%task name (lambda () (f args ...)) kwargs ...))))
(define (run-task t)
(when (check-filter-tags (task-tags t))
(if (not ((task-condition t)))