dosyalardan, statikleri kopyala, içerikleri md -> html
This commit is contained in:
51
src/ana.lisp
51
src/ana.lisp
@@ -20,6 +20,7 @@
|
|||||||
(node->html (şablon-yap node) stream))
|
(node->html (şablon-yap node) stream))
|
||||||
|
|
||||||
(defun markdown->html (kaynak hedef)
|
(defun markdown->html (kaynak hedef)
|
||||||
|
(format t "~s -> ~s~%" kaynak hedef)
|
||||||
(let ((okur (okur! kaynak)))
|
(let ((okur (okur! kaynak)))
|
||||||
(let ((root (markdown-ayrıştır okur))
|
(let ((root (markdown-ayrıştır okur))
|
||||||
(*print-case* :downcase))
|
(*print-case* :downcase))
|
||||||
@@ -28,9 +29,59 @@
|
|||||||
:if-exists :supersede)
|
:if-exists :supersede)
|
||||||
(şablonlu-yazdır root dış)))))
|
(şablonlu-yazdır root dış)))))
|
||||||
|
|
||||||
|
(defun md-dosyası? (yol)
|
||||||
|
(or (string= "md" (pathname-type yol))
|
||||||
|
(string= "markdown" (pathname-type yol))))
|
||||||
|
|
||||||
|
(defun tip-değiştir (yol yeni-tip)
|
||||||
|
(make-pathname :type yeni-tip :defaults yol))
|
||||||
|
|
||||||
|
(defun mod-zamanı (dosya)
|
||||||
|
(sb-posix:stat-mtime (sb-posix:stat dosya)))
|
||||||
|
|
||||||
|
(defun dosya-var? (dosya)
|
||||||
|
(uiop:file-exists-p dosya))
|
||||||
|
|
||||||
|
(defun dönüştürmeli? (kaynak hedef)
|
||||||
|
"Kaynak dosyadan hedef dosya oluşturulmalı mı ?
|
||||||
|
Markdown dosyası değişmediyse yeniden oluşturma."
|
||||||
|
(or (not (dosya-var? hedef))
|
||||||
|
(> (mod-zamanı kaynak)
|
||||||
|
(mod-zamanı hedef))))
|
||||||
|
|
||||||
|
(defun yol-çeviri (yol kaynak-kök hedef-kök)
|
||||||
|
(merge-pathnames (uiop:enough-pathname yol kaynak-kök)
|
||||||
|
hedef-kök))
|
||||||
|
|
||||||
|
(defun dosya-kopyala (kaynak hedef)
|
||||||
|
(uiop:copy-file kaynak hedef)
|
||||||
|
(format t "~s -> ~s~%" kaynak hedef))
|
||||||
|
|
||||||
|
(defun dizin-kopyala (kaynak hedef)
|
||||||
|
(ensure-directories-exist hedef)
|
||||||
|
(mapc (lambda (yol)
|
||||||
|
(dosya-kopyala yol (yol-çeviri yol kaynak hedef)))
|
||||||
|
(uiop:directory-files kaynak))
|
||||||
|
(loop :for d :in (uiop:subdirectories kaynak)
|
||||||
|
:do (dizin-kopyala d (yol-çeviri d kaynak hedef))))
|
||||||
|
|
||||||
|
(declaim (ftype (function (pathname pathname pathname)) tamamen-üret))
|
||||||
|
(defun tamamen-üret (statik içerik hedef) ;; isim skill issue
|
||||||
|
(assert (and (uiop:directory-exists-p statik)
|
||||||
|
(uiop:directory-exists-p içerik)))
|
||||||
|
(ensure-directories-exist hedef)
|
||||||
|
(dizin-kopyala statik hedef)
|
||||||
|
(loop :for dosya :in (uiop:directory-files içerik)
|
||||||
|
:do (when (md-dosyası? dosya)
|
||||||
|
(let ((html-dosyası (tip-değiştir (yol-çeviri dosya içerik hedef)
|
||||||
|
"html")))
|
||||||
|
(when (dönüştürmeli? dosya html-dosyası)
|
||||||
|
(markdown->html dosya html-dosyası))))))
|
||||||
|
|
||||||
(defun ana ()
|
(defun ana ()
|
||||||
(let ((args sb-ext:*posix-argv*))
|
(let ((args sb-ext:*posix-argv*))
|
||||||
(assert (= 3 (length args)))
|
(assert (= 3 (length args)))
|
||||||
(let ((kaynak (nth 1 args))
|
(let ((kaynak (nth 1 args))
|
||||||
(hedef (nth 2 args)))
|
(hedef (nth 2 args)))
|
||||||
(markdown->html kaynak hedef))))
|
(markdown->html kaynak hedef))))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user