163ba5a891b1bd0de5f7b7e9504e2755866ca862
[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  (when
24   (not (git nil "ls-remote" src))
25   (error "Project uri is not a valid git repository"))
26  (make-project :name name :src src)
27  t)
28
29 (defun add-job (project-name sha)
30  (make-job :project (find project-name *all-project* :key #'project-name :test #'string=) :sha sha)
31  t)