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

@ -17,13 +17,12 @@
(when update? "-u")
#:check? #t)))
(lambda ()
(run conn "rm" "-rf" tmp-dir #:check? #t)))))
(run conn "rm" "-rf" tmp-dir)))))
(playbook "Test Playbook"
(play "Test play"
#:host "localhost"
(task "Install AWS CLI"
(lambda ()
(install-aws-cli #:update? #t
#:install-dir (file-name-join* ($ #:fact.home-dir) ".local" "aws-cli")
#:bin-dir (file-name-join* ($ #:fact.home-dir) ".local" "bin"))))))
(task
(install-aws-cli #:update? #t
#:install-dir (file-name-join* ($ #:fact.home-dir) ".local" "aws-cli")
#:bin-dir (file-name-join* ($ #:fact.home-dir) ".local" "bin")))))

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)))