Ejecutando scripts en Elisp con Docker | Programador Web Valencia

Ejecutando scripts en Elisp con Docker

1 minuto

Emacs

Me encontraba con la necesidad de ejecutar un script en Emacs Lisp en un workflow cada vez que subiera un cambio a un repositorio de Git. Y además, debía lanzarse en un entorno Docker. Pero, ¡Emacs es un editor de texto! ¿Es posible? No hay nada imposible cuando trabajas con Emacs.

Primero debemos preparar el código que deseemos ejecutar. En mi caso construyo un sitio estático a partir de un archivo Org.

Creamos un archivo build.el con el código. Yo utilicé el siguiente que te puede servir de ejemplo:

(require 'package)
(add-to-list 'package-archives
	'("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
(package-refresh-contents)
(package-install 'one)
(find-file "/usr/src/app/one.org")
(one-build)
  1. Actualiza la lista de paquetes de Melpa.
  2. Instala el paquete one.
  3. Abre el archivo one.org.
  4. Ejecuta la función one-build que crea el sitio estático.

Ahora debemos crear un Dockerfile que instale una versión de Emacs y ejecute el script.

Realiza un archivo llamado Dockerfile con el siguiente contenido:

FROM debian:12-slim

# set work directory
WORKDIR /usr/src/app

# print output
RUN export TERM=xterm

# install software
RUN apt update
RUN apt install -y emacs-nox

# build
COPY . .
ENTRYPOINT emacs --batch --script build.el

emacs-nox es una versión de Emacs sin interfaz gráfica. --batch ejecuta Emacs en modo batch y --script ejecuta un script.

En realidad podríamos acabar aquí, con compilar la imagen habríamos acabado. Sin embargo, para facilitarnos la ejecución crearemos un archivo docker-compose.yml con el siguiente contenido:

services:

  one-el:
    build: .
    restart: "no"
    volumes:
      - .:/usr/src/app/

Ahora, para ejecutar el script, simplemente escribe en el terminal:

docker-compose up

Ya podemos incorporar scripts escritos en Emacs Lisp en nuestros workflows.

Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.

Atribución/Reconocimiento-NoComercial-SinDerivados 4.0 Internacional

¿Me invitas a un café? ☕

Puedes hacerlo usando el terminal.

ssh customer@andros.dev -p 5555

Comentarios

{{ comments.length }} comentarios

Nuevo comentario

Nueva replica  {{ formatEllipsisAuthor(replyComment.author) }}

Acepto la política de Protección de Datos.

Escribe el primer comentario

Tal vez también te interese...