39 lines
1.3 KiB
Org Mode
Executable File
39 lines
1.3 KiB
Org Mode
Executable File
#+TITLE: Run drone test suite from emacs
|
|
#+DATE: 2016-11-15 12:00:00 UTC
|
|
#+DESCRIPTION: Example lisp code that run drone in a shell and outputs into a buffer the results.
|
|
#+FILETAGS: emacs:lisp
|
|
#+CATEGORY: lisp
|
|
#+SLUG: run-drone-test-suite-from-emacs
|
|
#+BEGIN_COMMENT
|
|
.. title: Run drone test suite from emacs
|
|
.. slug: run-drone-test-suite-from-emacs
|
|
.. date: 2016-11-15 12:00:00 UTC
|
|
.. tags: lisp, emacs
|
|
.. category: lisp
|
|
.. link:
|
|
.. description: Example lisp code that run drone in a shell and outputs into a buffer the results.
|
|
.. type: text
|
|
#+END_COMMENT
|
|
|
|
The first function =drone-root= simply searches for =.drone.yml= by searching up the file system tree from the current files path.
|
|
|
|
The second function =drone-exec= runs =drone exec= and output the results to a new buffer called =*drone:=.
|
|
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
(defun drone-root ()
|
|
(or (locate-dominating-file default-directory ".drone.yml")
|
|
(error "Missing .drone.yml not found in directory tree")))
|
|
|
|
;;;###autoload
|
|
(defun drone-exec ()
|
|
"Run \"drone exec\" where .drone.yml is found."
|
|
(interactive)
|
|
(let ((default-directory (drone-root)))
|
|
(with-current-buffer (get-buffer-create (concat "*drone: " default-directory "*"))
|
|
(compilation-start (format "drone exec")
|
|
nil
|
|
(lambda (_) (buffer-name))))))
|
|
#+END_SRC
|
|
|