ordo/modules/ordo/task.scm

35 lines
1,009 B
Scheme
Raw Normal View History

(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?
task-description
task-action
task-register
task-triggers
2025-01-05 18:24:33 +00:00
run-task))
(define-record-type <task>
2025-01-05 17:43:09 +00:00
(make-task description action register triggers)
task?
(description task-description)
(action task-action)
(register task-register)
(triggers task-triggers))
(define* (task description action #:key (register #f) (triggers '()))
2025-01-05 17:43:09 +00:00
(make-task description action register triggers))
(define (run-task ctx t)
(match t
2025-01-05 17:43:09 +00:00
(($ <task> description action register triggers)
(format #t "RUNNING TASK ~a~%" description)
(let ((result (action ctx)))
2025-01-05 17:43:09 +00:00
(when register
(register-context-var! ctx register result))
(when triggers
(add-context-triggers! ctx triggers))))))