Add project listing
authorFrank Duncan <frank@kank.net>
Sun, 12 Dec 2021 17:28:53 +0000 (11:28 -0600)
committerFrank Duncan <frank@kank.net>
Sun, 12 Dec 2021 17:28:53 +0000 (11:28 -0600)
src/main/cli.lisp
src/main/package.lisp
src/main/server.lisp

index c1f013bf395e225bba08c3ca08e582fc3bc39d4c..8afc8403111cedf3a474fa72ed4cb23b19e581fb 100644 (file)
@@ -71,6 +71,7 @@
       (:add (add-project (cdr remaining-args)))
       (:show (show-project (cdr remaining-args)))
       (:refresh (refresh-project (cdr remaining-args)))
+      (:list (list-projects))
       (t (project-usage))))))))
 
 (defun project-usage ()
    "candle project"
    (project-options)
    "Interacts with projects.  The available project subcommands are:
-  add       Add a project
-  delete    Delete a project
-  show      Show project branch information
-  refresh   Tell the candle server to refresh the project information")))
+  list              List all projects
+  add <name>:<src>  Add a project
+  delete <name>     Delete a project
+  show <name>       Show project branch information
+  refresh <name>    Tell the candle server to refresh the project information")))
 
 (defun project-options ()
  '((:name :help :short "h" :long "help" :description "Print this usage.")
    (:positional "<subcommand>" :description "Project subcommand, see below.")))
 
-;   (:name :show :long "show" :takes-argument t :description
-;    "Show branch information for a project named by NAME."
-;    :variable-name "NAME")
-;   (:name :refresh :long "refresh" :takes-argument t :description
-;    "Refresh project named by NAME."
-;    :variable-name "NAME")
-;   (:name :delete :long "delete" :takes-argument t :description
-;    "Delete a project named by NAME."
-;    :variable-name "NAME")
-
 (defun add-project (args)
  (let*
   ((options
      (communication:query `(candle:refresh-project ,(car remaining-args)))
      (format t "Refreshed project ~A~%" (car remaining-args)))))))
 
+(defun list-projects ()
+ (format t "~{~{~A  ~A~}~%~}" (communication:query `(candle:list-projects))))
+
 ;;; Section for ./candle job
 
 (defmethod execute-command ((command (eql :job)) args)
   (cond
    ((eql error :unknown-option) (format *error-output* "Unknown option: ~A.  See 'candle job --help'.~%" (car remaining-args)))
    ((eql error :required-argument-missing) (format *error-output* "Missing argument for ~A.  See 'candle job --help'.~%" (car remaining-args)))
-   ((opera:option-present :help options) (format t "~A" (opera:usage "candle job" (job-options))))
+   ((opera:option-present :help options) (format t "~A" (opera:usage "candle job" (job-options) "Lists all jobs in PROJECT if no other action is specified")))
    ((not (opera:option-present :project-name options)) (format *error-output* "Requires --project argument.  See 'candle job --help'.~%" ))
    ((opera:option-present :log options) (job-log (opera:option-argument :project-name options) (opera:option-argument :log options)))
    (t (project-history (opera:option-argument :project-name options))))))
index 0f75498b3c38341b8bd7145ca1c03d3b378e842d..f43a3444444d664efe2468a5433bd22932b8cdfd 100644 (file)
@@ -1,6 +1,6 @@
 (defpackage #:candle (:use :cl)
  (:export
-  #:server #:add-project #:delete-project #:refresh-project
+  #:server #:add-project #:delete-project #:refresh-project #:list-projects
   #:project-branch-information #:run #:*candle-dir* #:*job-system*
   #:project-job-information #:get-job-log))
 
index 1f9a96cc1d2fd2888995c1f998c6a627911cef28..ef80743b6cd9ab45bb5de390f73892a539858845 100644 (file)
   (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*))