Provided fixes make cryogen work on Windows.

The path is converted to forward slash before further processed
The executables for sass and compass are configurable, that's because
on a Windows installation they are named sass.bat and compass.bat
The default is still the Unix version.
This commit is contained in:
Torsten Uhlmann 2016-12-17 11:29:16 +01:00
parent ca2513f954
commit 998fc077e8
4 changed files with 23 additions and 13 deletions

4
.gitignore vendored
View file

@ -7,4 +7,6 @@ pom.xml.asc
*.class *.class
/.lein-* /.lein-*
/.nrepl-port /.nrepl-port
.DS* .DS*
/.idea/
/cryogen-core.iml

View file

@ -1,4 +1,4 @@
(defproject cryogen-core "0.1.43" (defproject cryogen-core "0.1.44"
:description "Cryogen's compiler" :description "Cryogen's compiler"
:url "https://github.com/cryogen-project/cryogen-core" :url "https://github.com/cryogen-project/cryogen-core"
:license {:name "Eclipse Public License" :license {:name "Eclipse Public License"

View file

@ -85,7 +85,8 @@
[^java.io.File page config markup] [^java.io.File page config markup]
(with-open [rdr (java.io.PushbackReader. (reader page))] (with-open [rdr (java.io.PushbackReader. (reader page))]
(let [re-root (re-pattern (str "^.*?(" (:page-root config) "|" (:post-root config) ")/")) (let [re-root (re-pattern (str "^.*?(" (:page-root config) "|" (:post-root config) ")/"))
page-name (s/replace (str page) re-root "") page-fwd (s/replace (str page) "\\" "/") ;; make it work on Windows
page-name (s/replace page-fwd re-root "")
file-name (s/replace page-name (re-pattern-from-ext (m/ext markup)) ".html") file-name (s/replace page-name (re-pattern-from-ext (m/ext markup)) ".html")
page-meta (read-page-meta page-name rdr) page-meta (read-page-meta page-name rdr)
content ((m/render-fn markup) rdr config)] content ((m/render-fn markup) rdr config)]
@ -434,6 +435,8 @@
(update-in [:rss-filters] (fnil seq [])) (update-in [:rss-filters] (fnil seq []))
(update-in [:sass-src] (fnil str "css")) (update-in [:sass-src] (fnil str "css"))
(update-in [:sass-dest] (fnil str "css")) (update-in [:sass-dest] (fnil str "css"))
(update-in [:sass-path] (fnil str "sass"))
(update-in [:compass-path] (fnil str "compass"))
(update-in [:post-date-format] (fnil str "yyyy-MM-dd")) (update-in [:post-date-format] (fnil str "yyyy-MM-dd"))
(update-in [:keep-files] (fnil seq [])) (update-in [:keep-files] (fnil seq []))
(update-in [:ignored-files] (fnil seq [#"^\.#.*" #".*\.swp$"])))] (update-in [:ignored-files] (fnil seq [#"^\.#.*" #".*\.swp$"])))]
@ -448,7 +451,7 @@
"Generates all the html and copies over resources specified in the config" "Generates all the html and copies over resources specified in the config"
[] []
(println (green "compiling assets...")) (println (green "compiling assets..."))
(let [{:keys [^String site-url blog-prefix rss-name recent-posts sass-src sass-dest keep-files ignored-files previews? author-root-uri] :as config} (read-config) (let [{:keys [^String site-url blog-prefix rss-name recent-posts sass-src sass-dest sass-path compass-path keep-files ignored-files previews? author-root-uri] :as config} (read-config)
posts (add-prev-next (read-posts config)) posts (add-prev-next (read-posts config))
pages (add-prev-next (read-pages config)) pages (add-prev-next (read-pages config))
[navbar-pages sidebar-pages] (group-pages pages) [navbar-pages sidebar-pages] (group-pages pages)
@ -495,7 +498,9 @@
(rss/make-filtered-channels config posts-by-tag) (rss/make-filtered-channels config posts-by-tag)
(println (blue "compiling sass")) (println (blue "compiling sass"))
(sass/compile-sass->css! (sass/compile-sass->css!
{:src-sass sass-src {:path-sass sass-path
:path-compass compass-path
:src-sass sass-src
:dest-sass (path ".." "public" blog-prefix sass-dest) :dest-sass (path ".." "public" blog-prefix sass-dest)
:ignored-files ignored-files :ignored-files ignored-files
:base-dir "resources/templates/"}))) :base-dir "resources/templates/"})))

View file

@ -11,14 +11,14 @@
(defn sass-installed? (defn sass-installed?
"Checks for the installation of Sass." "Checks for the installation of Sass."
[] [path-sass]
(= 0 (:exit (sh "sass" "--version")))) (= 0 (:exit (sh path-sass "--version"))))
(defn compass-installed? (defn compass-installed?
"Checks for the installation of Compass." "Checks for the installation of Compass."
[] [path-compass]
(try (try
(= 0 (:exit (sh "compass" "--version"))) (= 0 (:exit (sh path-compass "--version")))
(catch java.io.IOException _ (catch java.io.IOException _
false))) false)))
@ -38,11 +38,13 @@
done by sh / launching the sass command." done by sh / launching the sass command."
[{:keys [src-sass [{:keys [src-sass
dest-sass dest-sass
path-sass
path-compass
base-dir]}] base-dir]}]
(shell/with-sh-dir base-dir (shell/with-sh-dir base-dir
(if (compass-installed?) (if (compass-installed? path-compass)
(sh "sass" "--compass" "--update" (str src-sass ":" dest-sass)) (sh path-sass "--compass" "--update" (str src-sass ":" dest-sass))
(sh "sass" "--update" (str src-sass ":" dest-sass))))) (sh path-sass "--update" (str src-sass ":" dest-sass)))))
(defn compile-sass->css! (defn compile-sass->css!
"Given a directory src-sass, looks for all sass files and compiles them into "Given a directory src-sass, looks for all sass files and compiles them into
@ -50,10 +52,11 @@ dest-sass. Prompts you to install sass if he finds sass files and can't find
the command. Shows you any problems it comes across when compiling. " the command. Shows you any problems it comes across when compiling. "
[{:keys [src-sass [{:keys [src-sass
dest-sass dest-sass
path-sass
ignored-files ignored-files
base-dir] :as opts}] base-dir] :as opts}]
(when-let [sass-files (seq (find-sass-files base-dir src-sass ignored-files))] (when-let [sass-files (seq (find-sass-files base-dir src-sass ignored-files))]
(if (sass-installed?) (if (sass-installed? path-sass)
;; I found sass files, ;; I found sass files,
;; If sass is installed ;; If sass is installed
(do (do