¿Es posible org-bable-tangle un archivo org desde la línea de comandos?

15

Me gustaría gestionar el enredo de mis archivos de organización con un Makefile. Aunque no puedo encontrar ninguna información sobre cómo enredar archivos desde la línea de comandos.

lookyhooky
fuente

Respuestas:

12

Puedes usar algo como:

emacs --batch --eval "(require 'org)" --eval '(org-babel-tangle-file "file-to-tangle.org")'

(Esa cita de shell está destinada a Bash, ajústela si usa un shell diferente).

EDITAR: Gracias a @SkydiveMike por señalar que había escrito por error en org-babel-tanglelugar de org-babel-tangle-file.

Omar
fuente
Lo intenté y recibí un Wrong type argument: stringp, nilmensaje de error, ¿alguna sugerencia de lo que posiblemente estoy haciendo mal?
lookyhooky
1
También necesito el -Lindicador para agregar el directorio actual a la ruta de carga y -l file-to-tangle.orgcargar el archivo antes de intentar enredarlo.
lookyhooky
8
emacs --batch -l org foo.org -f org-babel-tangleo emacs --batch -l org --eval '(org-babel-tangle-file "foo.org")'funciona para mi
xuchunyang
1
Para un script Bash, esto es útil:emacs --batch -l org --eval "(org-babel-tangle-file \"$1\")"
pentavalentcarbon
1
Para completar, la solución de xuchunyang funciona (en comparación con el original) porque tiene org-babel-tangle-file (que acepta un argumento FILE) en comparación con org-babel-tangle que funciona en el búfer actual.
SkydiveMike