From 03a03b16bafc5b33b4ff03327fab5ef8db22a728 Mon Sep 17 00:00:00 2001 From: Jeremy Dormitzer Date: Tue, 19 Nov 2019 01:48:12 -0500 Subject: [PATCH] Set up Prodigy to be able to read logs from file instead of buffer --- emacs/init.org | 52 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/emacs/init.org b/emacs/init.org index d2a874e..1791ec3 100755 --- a/emacs/init.org +++ b/emacs/init.org @@ -3104,6 +3104,30 @@ Syntax highlighting for Dockerfiles: (leader-def-key "P" #'prodigy) #+END_SRC + +Add the ability to associate a file with a service instead of a buffer: +#+BEGIN_SRC emacs-lisp + (with-eval-after-load 'prodigy + (defun prodigy-service-file (service) + "Return SERVICE file. + + If SERVICE file exists, use that. If not, find the first SERVICE + tag that has a file and return that." + (let ((file (prodigy-service-or-first-tag-with service :file))) + (if (functionp file) + (prodigy-callback-with-plist file service) + file))) + (defun prodigy-display-process-file-or-buffer () + (interactive) + (when-let (service (prodigy-service-at-pos)) + (if-let (file (prodigy-service-file service)) + (progn + (find-file-literally file) + (prodigy-view-mode) + (auto-revert-tail-mode)) + (prodigy-switch-to-process-buffer service)))) + (general-def 'normal prodigy-mode-map "`" #'prodigy-display-process-file-or-buffer)) +#+END_SRC * Lola Some functions to make my day job easier. @@ -3114,6 +3138,11 @@ Some functions to make my day job easier. (substitute-in-file-name (format "$WORKON_HOME/%s/bin/activate" venv)) callback)) + (defun get-latest-log () + (car (last (directory-files default-directory + nil + "[[:digit:]-]+T[[:digit:]:]+\\.log")))) + (defun python-service-setup (venv &optional env-file) (lambda (done) (call-with-venv @@ -3125,10 +3154,16 @@ Some functions to make my day job easier. (prodigy-define-service :name "lola-server (gunicorn)" - :command "gunicorn" - :args '("-c" "server/web/gunicorn.conf.py" - "-b" "127.0.0.1:7200" - "bin.start_web:init_and_create_flask_app()") + :command "bash" + :args (lambda () + (list + "-c" + (format + "gunicorn -c server/web/gunicorn.conf.py \ + -b 127.0.0.1:7200 bin.start_web:init_and_create_flask_app\\(\\) \ + &> %s.log" + (format-time-string "%Y-%m-%dT%H:%M:%S")))) + :file #'get-latest-log :cwd "~/lola/lola-server" :stop-signal 'int :truncate-output t @@ -3147,9 +3182,14 @@ Some functions to make my day job easier. (prodigy-define-service :name "travel-service" - :command "python" - :args '("bin/start_web.py") + :command "bash" + :args (lambda () + (list + "-c" + (format "python bin/start_web.py &> %s.log" + (format-time-string "%Y-%m-%dT%H:%M:%S")))) :cwd "~/lola/lola-travel-service" + :file #'get-latest-log :stop-signal 'int :truncate-output t :init-async (python-service-setup "travel-service"