40 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
| (require 'package)
 | |
| (require 'org)
 | |
| (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
 | |
| (package-initialize)
 | |
| (unless package-archive-contents
 | |
|  (package-refresh-contents))
 | |
| (package-install 'f)
 | |
| (package-install 'ox-gfm)
 | |
| (package-vc-install '(ox-gemini . (:url "https://labs.phundrak.com/phundrak/ox-gemini.git")))
 | |
| 
 | |
| (require 'f)
 | |
| (require 'ox-gfm)
 | |
| (require 'ox-gemini)
 | |
| (require 'ox-publish)
 | |
| 
 | |
| (setq org-confirm-babel-evaluate nil
 | |
|       org-html-validation-link nil
 | |
|       make-backup-files nil
 | |
|       org-export-with-broken-links t)
 | |
| 
 | |
| (defvar project-root
 | |
|   (file-name-as-directory (expand-file-name "content" default-directory)))
 | |
| 
 | |
| (dolist (file (f-files project-root (lambda (file) (f-ext-p file "org")) t))
 | |
|   (message "====== Exporting %s" (f-relative file))
 | |
|   (with-temp-buffer
 | |
|       (find-file file)
 | |
|       (org-export-to-file 'gfm (concat (f-no-ext file) ".md"))
 | |
|       (org-export-to-file 'gemini (concat (f-no-ext file) ".gmi"))))
 | |
| 
 | |
| (defvar gemini-root-dir "gemini")
 | |
| (dolist (subdir '("" "en" "lfn"))
 | |
|   (f-mkdir (f-join gemini-root-dir subdir)))
 | |
| (f-mkdir gemini-root-dir)
 | |
| (dolist (file (mapcar #'f-relative (f-files "." (lambda (file) (f-ext-p file "gmi")) t)))
 | |
|   (let ((new-place (f-join gemini-root-dir (apply #'f-join (cdr (f-split file))))))
 | |
|     (f-move file new-place)))
 | |
| 
 | |
| (message "Project generated!")
 |