Add project listing
[candle] / src / main / server.lisp
index 07f587b0753e356e1528a152adbbd678e43b664d..ef80743b6cd9ab45bb5de390f73892a539858845 100644 (file)
 (defun delete-project (name)
  (let
   ((project (find name *all-project* :test #'string= :key #'project-name)))
-  (when (not project) (error "Project does not exists"))
+  (when (not project) (error "Project does not exist"))
   (sb-ext:delete-directory (project-dir project) :recursive t)
   (mapcar #'nremove-job (find-job-by-project project))
   (mapcar #'nremove-branch (find-branch-by-project project))
   (nremove-project project)))
 
+(defun job->job-information (job)
+ (list (job-sha job) (job-status job) (job-create-date job)))
+
 (defun project-branch-information (name)
  (let
   ((project (find name *all-project* :test #'string= :key #'project-name)))
-  (when (not project) (error "Project does not exists"))
+  (when (not project) (error "Project does not exist"))
   (mapcar
    (lambda (branch)
     (list
      (branch-name branch)
-     (job-status (branch-job branch))
-     (job-create-date (branch-job branch))
-     (job-sha (branch-job branch))))
+     (job->job-information (branch-job branch))))
    (remove-if-not #'branch-in-git (find-branch-by-project project)))))
 
 (defun project-job-information (name)
  (let
   ((project (find name *all-project* :test #'string= :key #'project-name)))
-  (when (not project) (error "Project does not exists"))
-  (mapcar
-   (lambda (job)
-    (list
-     (job-sha job)
-     (job-status job)
-     (job-create-date job)))
-   (find-job-by-project project))))
+  (when (not project) (error "Project does not exist"))
+  (mapcar #'job->job-information (find-job-by-project project))))
+
+(defun get-job-log (project-name sha)
+ (let*
+  ((project (find project-name *all-project* :test #'string= :key #'project-name))
+   (job
+    (when project
+     (find-if
+      (lambda (job-sha)
+       (and (<= (length sha) (length job-sha)) (string= sha (subseq job-sha 0 (length sha)))))
+     (find-job-by-project project)
+     :key #'job-sha))))
+  (when (not project) (error "Project does not exist"))
+  (when (not job) (error "Job does not exist"))
+  (job-log job)))
+
+(defun list-projects ()
+ (mapcar
+  (lambda (project)
+   (list
+    (project-name project)
+    (project-src project)))
+  *all-project*))