3 (defun server (port &optional (background t))
4 (when (not *candle-dir*) (error "Need a candle dir"))
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
15 (lame-db:save-known-dbs data-dir))))
17 (communication:start-listener port background)))
19 (defun add-project (name src)
21 (not (cl-ppcre:scan "^[0-9A-Za-z-]*$" name))
22 (error "Name contains invalid characters"))
24 (not (git nil "ls-remote" src))
25 (error "Project uri is not a valid git repository"))
27 (find name *all-project* :test #'string= :key #'project-name)
28 (error "Project name already taken"))
30 ((project (make-project :name name :src src)))
31 (ensure-directories-exist (project-dir project))
32 (git project "clone" src "."))
35 (defun add-job (project-name sha)
36 (make-job :project (find project-name *all-project* :key #'project-name :test #'string=) :sha sha)