X-Git-Url: https://code.consxy.com/gitweb/gitweb.cgi?p=candle;a=blobdiff_plain;f=src%2Fmain%2Fcli.lisp;h=bbbf23cdffe28945754d57739af5d6257dad80ad;hp=0dd036ad5ffe7afa9c8f458cf821baba55d9efd7;hb=59e9f7983efcc1ee08609b075ea8345e5318b125;hpb=43528d90eeeee498d0a94c22bc38de9554e15d9a diff --git a/src/main/cli.lisp b/src/main/cli.lisp index 0dd036a..bbbf23c 100644 --- a/src/main/cli.lisp +++ b/src/main/cli.lisp @@ -6,19 +6,22 @@ :description "Port on which to listen for commands. Defaults to 25004") (:positional "" :required t :description "Command to send to candle server"))) -(defun project-options() +(defun project-options () '((:name :help :short "h" :long "help" :description "Print this usage.") (:name :add :long "add" :takes-argument t :description "Add a project. is the name of the project, which must not include colons, while is the location of the repository for cloning. This location must be accessible by the machine running candle." :variable-name ":"))) -(defun job-options() +(defun job-options () '((:name :help :short "h" :long "help" :description "Print this usage.") - (:name :project-name :short "p" :long "project" :takes-argument t :description "The project name for the jobs under consideration.") + (:name :project-name :long "project" :takes-argument t :description "The project name for the jobs under consideration.") (:name :add :long "add" :takes-argument t :description "Add a job to a project. is the commit for that project to run the job. Requires --project to be specified." :variable-name ""))) +(defun run-options () + '((:name :help :short "h" :long "help" :description "Print this usage."))) + (defun main-usage () (format t "~A" (opera:usage @@ -41,8 +44,7 @@ (t (let* ((name (subseq project-definition 0 pos)) - (src (subseq project-definition (1+ pos))) - (response (communication:query `(candle:add-project ,name ,src)))) + (src (subseq project-definition (1+ pos)))) (format t "Added project ~A at src definition ~A~%" name src)))))) (defmethod execute-command ((command (eql :project)) args) @@ -54,9 +56,7 @@ ((opera:option-present :add options) (add-project (opera:option-argument :add options)))))) (defun add-job (project-name sha) - (let - ((response (communication:query `(candle:add-job ,project-name ,sha)))) - (format t "Added job with sha ~A to project ~A~%" sha project-name))) + (format t "Added job with sha ~A to project ~A~%" sha project-name)) (defmethod execute-command ((command (eql :job)) args) (multiple-value-bind (options remaining-args error) (opera:process-arguments (job-options) args) @@ -71,6 +71,15 @@ (opera:option-argument :project-name options) (opera:option-argument :add options)))))) +(defmethod execute-command ((command (eql :run)) args) + (multiple-value-bind (options remaining-args error) (opera:process-arguments (run-options) args) + (cond + ((eql error :unknown-option) (format *error-output* "Unknown option: ~A. See 'candle run --help'.~%" (car remaining-args))) + ((eql error :required-argument-missing) (format *error-output* "Missing argument for ~A. See 'candle run --help'.~%" (car remaining-args))) + (remaining-args (format *error-output* "Unknown option: ~A. See 'candle run --help'.~%" (car remaining-args))) + ((opera:option-present :help options) (format t "~A" (opera:usage "candle run" (run-options)))) + (t (candle:run))))) + (defun run () (multiple-value-bind (options remaining-args error) (opera:process-arguments (main-options) (cdr sb-ext:*posix-argv*)) (cond @@ -88,5 +97,3 @@ (parse-integer (opera:option-argument :port options) :junk-allowed t)) 25004))) (execute-command (intern (string-upcase (car remaining-args)) :keyword) (cdr remaining-args))))))) - -; vim:ft=lisp