Set up Prodigy to be able to read logs from file instead of buffer

This commit is contained in:
Jeremy Dormitzer 2019-11-19 01:48:12 -05:00
parent 5c8d703e8e
commit 03a03b16ba

View File

@ -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"