From 9b83357faca162de4355a76d4247925b7c9d56d8 Mon Sep 17 00:00:00 2001
From: Michael Glaesemann <grzm@seespotcode.net>
Date: Fri, 21 Feb 2014 13:40:34 -0500
Subject: [PATCH] Permit nodejs targets to have a preamble.

---
 src/clj/cljs/closure.clj        |  8 +++-----
 src/clj/cljs/compiler.clj       |  2 +-
 src/cljs/cljs/core.cljs         |  2 +-
 test/clj/cljs/closure_tests.clj | 19 +++++++++++++++++++
 test/clj/cljs/preamble1.js      |  1 +
 test/clj/cljs/preamble2.js      |  1 +
 6 files changed, 26 insertions(+), 7 deletions(-)
 create mode 100644 test/clj/cljs/preamble1.js
 create mode 100644 test/clj/cljs/preamble2.js

diff --git a/src/clj/cljs/closure.clj b/src/clj/cljs/closure.clj
index a683226..17d98d5 100644
--- a/src/clj/cljs/closure.clj
+++ b/src/clj/cljs/closure.clj
@@ -712,11 +712,9 @@
   (str (apply str (map #(slurp (io/resource %)) paths)) "\n"))
 
 (defn make-preamble [{:keys [target preamble hashbang]}]
-  (if preamble
-    (preamble-from-paths preamble)
-    (if (= :nodejs target)
-      (str "#!" (or hashbang "/usr/bin/env node") "\n")
-      "")))
+  (str (when (= :nodejs target)
+         (str "#!" (or hashbang "/usr/bin/env node") "\n"))
+       (when preamble (preamble-from-paths preamble))))
 
 (comment
   ;; add dependencies to literal js
diff --git a/src/clj/cljs/compiler.clj b/src/clj/cljs/compiler.clj
index 1ba737c..02fdc19 100644
--- a/src/clj/cljs/compiler.clj
+++ b/src/clj/cljs/compiler.clj
@@ -21,7 +21,7 @@
 (set! *warn-on-reflection* true)
 
 ;; next line is auto-generated by the build-script - Do not edit!
-(def ^:dynamic *clojurescript-version*)
+(def ^:dynamic *clojurescript-version* {:major 0, :minor 0, :qualifier 2170})
 
 (defn clojurescript-version 
   "Returns clojurescript version as a printable string."
diff --git a/src/cljs/cljs/core.cljs b/src/cljs/cljs/core.cljs
index d0ed668..7487ee8 100644
--- a/src/cljs/cljs/core.cljs
+++ b/src/cljs/cljs/core.cljs
@@ -13,7 +13,7 @@
             [goog.array :as garray]))
 
 ;; next line is auto-generated by the build-script - Do not edit!
-(def *clojurescript-version*)
+(def *clojurescript-version* "0.0-2170")
 
 (def *unchecked-if* false)
 
diff --git a/test/clj/cljs/closure_tests.clj b/test/clj/cljs/closure_tests.clj
index bf2f960..d280908 100644
--- a/test/clj/cljs/closure_tests.clj
+++ b/test/clj/cljs/closure_tests.clj
@@ -1,2 +1,21 @@
 (ns cljs.closure-tests
+  (:use cljs.closure)
   (:use clojure.test))
+
+(deftest test-make-preamble
+  (testing "no options"
+    (is (= "" (make-preamble {}))))
+  (testing "nodejs"
+    (testing "with default hashbang"
+      (is (= "#!/usr/bin/env node\n" (make-preamble {:target :nodejs}))))
+    (testing "with custom hashbang"
+      (is (= "#!/bin/env node\n" (make-preamble {:target :nodejs
+                                                 :hashbang "/bin/env node"}))))
+    (testing "with preamble"
+      (is (= "#!/usr/bin/env node\nvar preamble1 = require(\"preamble1\");\n"
+             (make-preamble {:target :nodejs
+                             :preamble ["cljs/preamble1.js"]})))))
+  (testing "preamble"
+    (is (= "var preamble1 = require(\"preamble1\");var preamble2 = require(\"preamble2\");\n"
+           (make-preamble {:preamble ["cljs/preamble1.js"
+                                      "cljs/preamble2.js"]})))))
diff --git a/test/clj/cljs/preamble1.js b/test/clj/cljs/preamble1.js
new file mode 100644
index 0000000..660eb46
--- /dev/null
+++ b/test/clj/cljs/preamble1.js
@@ -0,0 +1 @@
+var preamble1 = require("preamble1");
\ No newline at end of file
diff --git a/test/clj/cljs/preamble2.js b/test/clj/cljs/preamble2.js
new file mode 100644
index 0000000..44e1016
--- /dev/null
+++ b/test/clj/cljs/preamble2.js
@@ -0,0 +1 @@
+var preamble2 = require("preamble2");
\ No newline at end of file
-- 
1.8.5.5

