Add aws processor, refactor processing a little
[candle] / bin / candle-server
index 7e8e8abe65ebe3f3a63de9f0d0a54644edd0c09e..7bd12a6d77bbd9a1f7c51cb2f404e8de41df7b5a 100755 (executable)
@@ -4,7 +4,9 @@
 (require 'asdf)
 (asdf:initialize-source-registry
  `(:source-registry (:tree ,(car (directory "."))) :INHERIT-CONFIGURATION))
-(asdf:load-system :candle)
+(let
+ ((*error-output* (make-broadcast-stream)))
+ (asdf:load-system :candle))
 (asdf:load-system :opera)
 
 (defpackage #:candle-server-cli (:use #:common-lisp))
 (defvar *options*
  '((:name :help :short "h" :long "help" :description "Print this usage.")
    (:name :port :short "p" :long "port" :takes-argument t :variable-name "PORT"
-    :description "Port on which to listen for commands.  Defaults to 25004")))
+    :description "Port on which to listen for commands.  Defaults to 25004")
+   (:name :dir :long "candle-dir" :takes-argument t :variable-name "DIR"
+    :description "Directory for candle related data.  Will be created if does not exist.  Defaults to /opt/candle/")
+   (:name :system :long "system" :takes-argument t :variable-name "SYSTEM"
+    :description "System on which to run jobs.  Currently available are local and aws.  Defaults to local.")))
 
 (defun usage ()
  (format t "~A"
                 (opera:option-present :port options)
                 (parse-integer (opera:option-argument :port options) :junk-allowed t))
             25004)))
+   (setf candle:*job-system*
+    (if (opera:option-present :system options)
+     (intern (string-upcase (opera:option-argument :system options)) :keyword)
+     :local))
+   (case candle:*job-system*
+    (:aws (asdf:load-system :candle-aws))
+    (:local (asdf:load-system :candle-local)))
+   (setf candle:*candle-dir*
+    (if (opera:option-present :dir options)
+     (opera:option-argument :dir options)
+     "/opt/candle/"))
    (format t "Starting server on port ~A~%" port)
    (candle:server port nil)))))