diff options
-rw-r--r-- | Makefile.scm | 124 |
1 files changed, 72 insertions, 52 deletions
diff --git a/Makefile.scm b/Makefile.scm index af0e9af..67ca4a0 100644 --- a/Makefile.scm +++ b/Makefile.scm @@ -4,7 +4,10 @@ exec chibi-scheme -A utils/ $0 $@ |# (import (chibi) (chibi json) - (only (chibi filesystem) directory-files create-directory*) + (only (chibi filesystem) + directory-files + create-directory* + file-directory?) (chibi process) (only (chibi pathname) path-strip-directory path-extension make-path) ;(chibi app) @@ -19,13 +22,14 @@ exec chibi-scheme -A utils/ $0 $@ (define (directory-files-not-hidden dir) (filter - (lambda (x) (and (not (string-prefix? "." x)) - (string=? "md" (path-extension x)))) + (lambda (x) (not (string-prefix? "." x))) (directory-files dir))) (define (directory-sources lang dir) (map (lambda (x) (make-path dir lang x)) - (sort (directory-files-not-hidden (make-path dir lang)) string<?))) + (sort (filter + (lambda (x) (string=? "md" (or (path-extension x) ""))) + (directory-files-not-hidden (make-path dir lang))) string<?))) (define (directory-meta lang dir) (make-path dir lang "Metadata.yaml")) @@ -62,20 +66,21 @@ exec chibi-scheme -A utils/ $0 $@ (create-directory* outpath) (process->string-or-fail (append - `("pandoc" + (list + "pandoc" "--to=html" - "-o" ,(make-path outpath "web-simple.html") + "-o" (make-path outpath "web-simple.html") "--standalone" "--no-highlight" "--data-dir=." - ,(string-append "--resource-path=" input) + (string-append "--resource-path=" input) "--base-header-level=2" ;"--shift-heading-level-by=-1" is the new way "--template=web-simple.html" "--lua-filter=toc.lua" "--lua-filter=anchored-h.lua" - "--lua-filter=appendixes.lua") - files - `("--metadata-file" ,metafile)) + "--lua-filter=appendixes.lua" + "--metadata-file" metafile) + files) "Error in web-page creation"))) @@ -86,22 +91,23 @@ exec chibi-scheme -A utils/ $0 $@ (create-directory* outpath) (process->string-or-fail (append - `("pandoc" + (list + "pandoc" "--to=html" - "-o" ,(make-path outpath "web.html") + "-o" (make-path outpath "web.html") "--standalone" "--self-contained" "--base-header-level=2" ;"--shift-heading-level-by=-1" is the new way "--data-dir=." - ,(string-append "--resource-path=./templates/web/:" - "./templates:" - input) + (string-append "--resource-path=./templates/web/:" + "./templates:" + input) "--template=web.html" "--lua-filter=toc.lua" "--lua-filter=anchored-h.lua" - "--lua-filter=appendixes.lua") - files - `("--metadata-file" ,metafile)) + "--lua-filter=appendixes.lua" + "--metadata-file" metafile) + files) "Error in simple web-page creation"))) (define (pandoc-book lang output input) @@ -111,16 +117,17 @@ exec chibi-scheme -A utils/ $0 $@ (create-directory* outpath) (process->string-or-fail (append - `("pandoc" - "-o" ,(make-path outpath "book.pdf") + (list + "pandoc" + "-o" (make-path outpath "book.pdf") "--standalone" "--pdf-engine=xelatex" "--data-dir=." - ,(string-append "--resource-path=" input) + (string-append "--resource-path=" input) "--template=book.latex" - "--lua-filter=appendixes.lua") - files - `("--metadata-file" ,metafile)) + "--lua-filter=appendixes.lua" + "--metadata-file" metafile) + files) "Error in book creation"))) (define (pandoc-book-simple lang output input) @@ -130,16 +137,17 @@ exec chibi-scheme -A utils/ $0 $@ (create-directory* outpath) (process->string-or-fail (append - `("pandoc" - "-o" ,(make-path outpath "book-simple.pdf") + (list + "pandoc" + "-o" (make-path outpath "book-simple.pdf") "--standalone" "--pdf-engine=xelatex" "--data-dir=." - ,(string-append "--resource-path=" input) + (string-append "--resource-path=" input) "--template=book-simple.latex" - "--lua-filter=appendixes.lua") - files - `("--metadata-file" ,metafile)) + "--lua-filter=appendixes.lua" + "--metadata-file" metafile) + files) "Error in simple book creation"))) (define (pandoc-epub lang output input) @@ -149,19 +157,20 @@ exec chibi-scheme -A utils/ $0 $@ (create-directory* outpath) (process->string-or-fail (append - `("pandoc" - "-o" ,(make-path outpath "book.epub") + (list + "pandoc" + "-o" (make-path outpath "book.epub") "--standalone" "--data-dir=." - ,(string-append "--resource-path=" input) + (string-append "--resource-path=" input) "--css=./templates/ebook/epub.css" "--template=book.epub" - "--lua-filter=appendixes.lua") - files - `("--metadata-file" ,metafile)) + "--lua-filter=appendixes.lua" + "--metadata-file" metafile) + files) "Error in ebook creation"))) -(define (make-cover lang out input) +(define (make-cover lang output input) (let* ((outpath (make-path output lang)) (files (directory-sources lang input)) (metafile (directory-meta lang input)) @@ -180,22 +189,33 @@ exec chibi-scheme -A utils/ $0 $@ ,svg-file)) "Error in cover creation"))) +(define (build-lang lang output input) + (pandoc-web lang output input) + (pandoc-web-simple lang output input) + (pandoc-book lang output input) + (pandoc-book-simple lang output input) + (pandoc-epub lang output input) + (make-cover lang output input)) + +(define (get-langs input) + (filter + (lambda (l) (and (file-directory? (make-path input l)) + (= 2 (string-length l)))) + (directory-files-not-hidden input))) + +(define (build input) + (let* ((bookname (path-strip-directory (string-trim-right input #\/))) + (output (make-path "out" bookname))) + (map (lambda (lang) + (build-lang lang output input)) + (get-langs input)))) + + + + ;; RUN THIS LIKE: -;; chibi-scheme Makefile.scm src/BOOK_FOLDER +;; chibi-scheme Makefile.scm src/BOOK_FOLDER ... ;; ;; It will dump the compiled book to .out/BOOK_FOLDER/LANG/FORMAT.EXT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define args (cdr (command-line))) -(define input (car args)) -(define bookname (path-strip-directory (string-trim-right input #\/))) -(define output (make-path "out" bookname)) - - -(pandoc-web "es" output input) -(pandoc-web-simple "es" output input) -(pandoc-book "es" output input) -(pandoc-book-simple "es" output input) -(pandoc-epub "es" output input) -(make-cover "es" output input) - -;(display (cdr (assoc 'title (read-meta "src/Programming_in_Python/es/Metadata.yaml")))) +(map build (cdr (command-line))) |