    [clojure.java.io :as io]
    [clojure.string :as string]
    [clojure.spec.alpha :as s]
+   [clojure.set]
    [figwheel.main.schema.core :refer [def-spec-meta non-blank-string? directory-exists?]]
    [expound.alpha :as exp]
    [spell-spec.alpha :as spell]
    [spell-spec.expound]))
-
-(s/def ::edn (spell/strict-keys :opt-un
-                     [::watch-dirs
-                      ::css-dirs
-                      ::ring-handler
-                      ::ring-server-options
-                      ::rebel-readline
-                      ::pprint-config
-                      ::open-file-command
-                      ::figwheel-core
-                      ::hot-reload-cljs
-                      ::connect-url
-                      ::reload-clj-files
-                      ::log-file
-                      ::log-level
-                      ::log-syntax-error-style
-                      ::load-warninged-code
-                      ::ansi-color-output
-                      ::validate-config
-                      ::target-dir
-
-                      ::launch-node
-                      ::inspect-node
-                      ::node-command
-
-                      ::client-print-to
-                      ::ring-stack
-                      ::ring-stack-options
-                      ::watch-time-ms
-                      ::mode
-                      ::ring-server
-                      ::broadcast
-                      ::broadcast-reload]))
 
 (s/def ::watch-dirs (s/coll-of (s/and non-blank-string?
                                       directory-exists?)))


    :broadcast true"
  :group :un-common)

    :validate-config false"
  :group :common)

(s/def ::validate-cli boolean?)
(def-spec-meta ::validate-cli
  :doc
 "Whether to validate the figwheel-main command line options
Default: true

    :validate-cli false"
  :group :common)

(s/def ::target-dir non-blank-string?)
(def-spec-meta ::target-dir
  :doc
