Add a macro to make task definitions more succinct
This commit is contained in:
parent
7f5ec3ac29
commit
1843544e49
2 changed files with 13 additions and 7 deletions
|
@ -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")))))
|
||||
|
|
|
@ -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)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue