   (:require
     [clansi.core :refer [style]]
     [clojure.string :refer [split-lines]]
+    [clojure.set :refer [difference]]
     [cljs-api-gen.read :refer [read-all-ns-forms]]
     [cljs-api-gen.repo-cljs :refer [with-version! published-cljs-tags]]))
 

(defn fetch-repo-repl-options []
  (first (keep parse-known-repl-opts (read-all-ns-forms "cljs.repl" :compiler))))

(defn fetch-repo-options []
  (with-version! (last @published-cljs-tags)
    {:compiler (fetch-repo-compiler-options)
     :repl (fetch-repo-repl-options)}))

;; TODO: track ignored compiler/repl options (for each source?)

(defn notify-new-options-from-site []
  (let [{:keys [compiler repl]} (fetch-site-options)
        new-compiler (apply disj compiler (keys compiler-options))
        new-repl (apply disj repl (keys repl-options))]
    (when (seq new-compiler)
      (println "\nNew Compiler Options (via site):\n")
      (doseq [opt (sort new-compiler)]

   :rewrite-polyfills {:added "1.9.562"}
   :source-map {:added "0.0-1798"}
   :source-map-asset-path {:added "1.9.90"}
   ; :source-map-inline {:added "0.0-2911"} ; (see ignored below)
   :source-map-path {:added "0.0-2060"}
   :source-map-timestamp {:added "0.0-2505"}
   :static-fns {:added "0.0-1424"}
   :target {:added "0.0-971"}
   ; :ups-externs {:added "0.0-993"}      ; (see ignored below)
   ; :ups-foreign-libs {:added "0.0-993"} ; (see ignored below)
   ; :ups-libs {:added "0.0-993"}         ; (see ignored below)
   :use-only-custom-externs {:added "0.0-971"}
   :verbose {:added "0.0-971"}
   :warning-handlers {:added "1.7.10"}
