From 3a2cf4eb03820694e101691d8c49e76ed091426c Mon Sep 17 00:00:00 2001 From: Frank Duncan Date: Sun, 12 Dec 2021 07:48:30 -0600 Subject: [PATCH] Add job --log --- src/main/cli.lisp | 9 ++++++++- src/main/package.lisp | 2 +- src/main/server.lisp | 14 ++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/cli.lisp b/src/main/cli.lisp index bee2885..ee917b3 100644 --- a/src/main/cli.lisp +++ b/src/main/cli.lisp @@ -25,7 +25,10 @@ '((:name :help :short "h" :long "help" :description "Print this usage.") (:name :project-name :long "project" :takes-argument t :variable-name "PROJECT" - :description "The project name for the jobs under consideration. Required argumnet."))) + :description "The project name for the jobs under consideration. Required argumnet.") + (:name :log :long "log" :takes-argument t + :variable-name "SHA" + :description "Show's the processing log for job at sha SHA. SHA can be truncated."))) (defun run-options () '((:name :help :short "h" :long "help" :description "Print this usage."))) @@ -90,6 +93,9 @@ #'job-info->line (sort (communication:query `(candle:project-job-information ,name)) #'< :key #'third)))) +(defun job-log (project-name sha) + (format t "~A~%" (communication:query `(candle:get-job-log ,project-name ,sha)))) + (defun refresh-project (name) (communication:query `(candle:refresh-project ,name)) (format t "Refreshed project ~A~%" name)) @@ -112,6 +118,7 @@ ((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)))) ((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)))))) (defmethod execute-command ((command (eql :run)) args) diff --git a/src/main/package.lisp b/src/main/package.lisp index 88e02c7..0f75498 100644 --- a/src/main/package.lisp +++ b/src/main/package.lisp @@ -2,6 +2,6 @@ (:export #:server #:add-project #:delete-project #:refresh-project #:project-branch-information #:run #:*candle-dir* #:*job-system* - #:project-job-information)) + #:project-job-information #:get-job-log)) (defpackage #:candle-cli (:use :cl) (:export :run)) diff --git a/src/main/server.lisp b/src/main/server.lisp index 409a804..1f9a96c 100644 --- a/src/main/server.lisp +++ b/src/main/server.lisp @@ -89,3 +89,17 @@ ((project (find name *all-project* :test #'string= :key #'project-name))) (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))) -- 2.25.1