 (ns doo.karma
   (:import java.io.File)
-  (:require [clojure.string :as str]
+  (:require [clojure.set :as set]
+            [clojure.string :as str]
             [clojure.java.io :as io]
             [clojure.data.json :as json]
             [doo.shell :as shell]

   :opera         {:plugin (karma-plugin-name "opera")
                   :name   "Opera"}
   :ie            {:plugin (karma-plugin-name "ie")
                   :name   "IE"}})

(def envs (set (keys browser-envs)))

(defn env? [js]
  (contains? browser-envs js))

;; In Karma all paths (including config.files) are normalized to
;; absolute paths using the basePath.

;; https://github.com/clojure/clojurescript/blob/master/src/main/clojure/cljs/closure.clj#L1152

(defn js-env->plugin [js-env]
  (get-in karma-envs [js-env :plugin]))

(defn js-env->browser [js-env]
  (get-in karma-envs [js-env :name]))

(defn ->karma-opts [js-envs compiler-opts]
  (letfn [(->out-dir [p]
