fa9edbe45600258e7c5fd51b87cb9ec552a2984d
[candle] / src / main / run.lisp
1 (in-package #:candle)
2
3 (defun import-package (pkg)
4  (asdf:load-system pkg))
5
6 (defun run-task (task)
7  (format t "~%~c[1;33mRunning ~:(~A~)~c[0m~%" #\Esc (getf task :name) #\Esc)
8  (eval (getf task :directions))
9 ; (format t "~c[1;31mFailed doc check!~c[0m~%" #\Esc #\Esc)
10  (format t "~c[1;32m- ~:(~A~) Passed!~c[0m~%" #\Esc (getf task :name) #\Esc))
11
12 (defun run ()
13  (if
14   (not (probe-file ".candle"))
15   :dot-candle-absent
16   (with-open-file (str ".candle")
17    (asdf:initialize-source-registry `(:source-registry (:tree ,(car (directory "."))) :INHERIT-CONFIGURATION))
18    (mapcar #'import-package (cdr (read str)))
19    (let
20     ((candle-definition (read str)))
21     (format t "Running tasks for ~(~A~)~%" (getf candle-definition :name))
22     (mapcar #'run-task (getf candle-definition :tasks))))))