d393feed245810c954c2444efa3feb0f9c19fe50
[candle] / src / main / server.lisp
1 (in-package #:candle)
2
3 (defun server (port &optional (background t))
4  (when (not *candle-dir*) (error "Need a candle dir"))
5  (let
6   ((data-dir (format nil "~Adata" *candle-dir*)))
7   (ensure-directories-exist *candle-dir*)
8   (ensure-directories-exist data-dir)
9   (lame-db:load-known-dbs data-dir)
10   (sb-thread:make-thread
11    (lambda ()
12     (do () (nil)
13      (progn
14       (sleep (* 5 60))
15       (lame-db:save-known-dbs data-dir))))
16    :name "Save Thread")
17   (communication:start-listener port background)))
18
19 (defun add-project (name src)
20  (when
21   (not (cl-ppcre:scan "^[0-9A-Za-z-]*$" name))
22   (error "Name contains invalid characters"))
23  (make-project :name name :src src)
24  t)
25
26 (defun add-job (project-name sha)
27  (make-job :project (find project-name *all-project* :key #'project-name :test #'string=) :sha sha)
28  t)