2024-07-16 16:26:09 +01:00
|
|
|
(define-module (ordo task)
|
2025-01-05 17:43:09 +00:00
|
|
|
#:use-module (ice-9 match)
|
|
|
|
#:use-module (srfi srfi-1) ; list utils
|
|
|
|
#:use-module (srfi srfi-9) ; records
|
|
|
|
#:use-module (srfi srfi-26) ; cut
|
|
|
|
#:use-module (ordo context)
|
2025-01-05 18:24:33 +00:00
|
|
|
#:export (task
|
|
|
|
task?
|
2025-01-05 19:10:42 +00:00
|
|
|
task-description
|
|
|
|
task-action
|
|
|
|
task-register
|
|
|
|
task-triggers
|
2025-01-05 18:24:33 +00:00
|
|
|
run-task))
|
2024-07-16 16:26:09 +01:00
|
|
|
|
|
|
|
(define-record-type <task>
|
2025-01-05 17:43:09 +00:00
|
|
|
(make-task description action register triggers)
|
2024-07-16 16:26:09 +01:00
|
|
|
task?
|
2025-01-05 19:10:42 +00:00
|
|
|
(description task-description)
|
|
|
|
(action task-action)
|
|
|
|
(register task-register)
|
|
|
|
(triggers task-triggers))
|
2024-07-16 16:26:09 +01:00
|
|
|
|
2025-01-07 18:09:10 +00:00
|
|
|
(define* (task description action #:key (register #f) (triggers '()))
|
2025-01-05 17:43:09 +00:00
|
|
|
(make-task description action register triggers))
|
2024-07-16 16:26:09 +01:00
|
|
|
|
2025-01-07 18:09:10 +00:00
|
|
|
(define (run-task ctx t)
|
2025-01-06 21:38:32 +00:00
|
|
|
(match t
|
2025-01-05 17:43:09 +00:00
|
|
|
(($ <task> description action register triggers)
|
2025-01-05 19:10:42 +00:00
|
|
|
(format #t "RUNNING TASK ~a~%" description)
|
2025-01-07 18:09:10 +00:00
|
|
|
(let ((result (action ctx)))
|
2025-01-05 17:43:09 +00:00
|
|
|
(when register
|
|
|
|
(register-context-var! ctx register result))
|
|
|
|
(when triggers
|
2025-01-05 19:10:42 +00:00
|
|
|
(add-context-triggers! ctx triggers))))))
|