syndicate-rkt/OLD-syndicate-examples/ircd/config.rkt

31 lines
971 B
Racket

;;; SPDX-License-Identifier: LGPL-3.0-or-later
;;; SPDX-FileCopyrightText: Copyright © 2010-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
#lang syndicate
(require/activate syndicate/reload)
(require/activate syndicate/supervise)
(require/activate syndicate/drivers/config)
(require "protocol.rkt")
(require racket/set)
(require (only-in racket/list append* flatten))
(require (only-in racket/string string-split))
(spawn-configuration 'ircd "ircd-config.rktd" #:hook (lambda () (stop-when-reloaded)))
(spawn #:name 'config
(stop-when-reloaded)
(during (config 'ircd `(port ,$port))
(assert (ircd-listener port)))
(during (config 'ircd `(channel ,$Ch))
(assert (ircd-channel Ch)))
(define/query-set motds (config 'ircd `(motd ,$text)) text)
(assert (ircd-motd (append*
(map (lambda (t) (string-split t "\n"))
(flatten (set->list (motds))))))))