115 lines
5.2 KiB
Clojure
115 lines
5.2 KiB
Clojure
(ns devtools.core
|
|
(:require [devtools.prefs :as prefs]
|
|
[devtools.hints :as hints]
|
|
[devtools.defaults :refer [feature-groups]]
|
|
[devtools.formatters :as formatters]
|
|
[devtools.async :as async]
|
|
[devtools.toolbox] ; this auto-requires the toolbox namespace, used by cljs-oops
|
|
[devtools.context :as context]
|
|
[devtools.util :refer [display-banner-if-needed! install-feature! resolve-features! make-lib-info
|
|
print-config-overrides-if-requested!
|
|
under-advanced-build? display-advanced-build-warning-if-needed!]]))
|
|
|
|
; -- public API -------------------------------------------------------------------------------------------------------------
|
|
|
|
(defn is-feature-available? [feature]
|
|
(case feature
|
|
:formatters (formatters/available?)
|
|
:hints (hints/available?)
|
|
:async (async/available?)))
|
|
|
|
(defn available?
|
|
([] (available? (prefs/pref :features-to-install)))
|
|
([features-desc]
|
|
(let [features (resolve-features! features-desc @feature-groups)]
|
|
(if (empty? features)
|
|
false
|
|
(every? is-feature-available? features)))))
|
|
|
|
(defn is-feature-installed? [feature]
|
|
(case feature
|
|
:formatters (formatters/installed?)
|
|
:hints (hints/installed?)
|
|
:async (async/installed?)))
|
|
|
|
(defn installed?
|
|
([] (installed? (prefs/pref :features-to-install)))
|
|
([features-desc]
|
|
(let [features (resolve-features! features-desc @feature-groups)]
|
|
(if (empty? features)
|
|
false
|
|
(every? is-feature-installed? features)))))
|
|
|
|
(defn install!
|
|
([] (install! (prefs/pref :features-to-install)))
|
|
([features-desc]
|
|
(if (under-advanced-build?)
|
|
(display-advanced-build-warning-if-needed!)
|
|
(let [features (resolve-features! features-desc @feature-groups)]
|
|
(display-banner-if-needed! features @feature-groups)
|
|
(print-config-overrides-if-requested! "config overrides prior install:\n")
|
|
(install-feature! :formatters features is-feature-available? formatters/install!)
|
|
(install-feature! :hints features is-feature-available? hints/install!)
|
|
(install-feature! :async features is-feature-available? async/install!)))))
|
|
|
|
(defn uninstall! []
|
|
(formatters/uninstall!)
|
|
(hints/uninstall!)
|
|
(async/uninstall!))
|
|
|
|
(defn set-prefs! [new-prefs]
|
|
(prefs/set-prefs! new-prefs))
|
|
|
|
(defn get-prefs []
|
|
(prefs/get-prefs))
|
|
|
|
(defn set-pref! [pref val]
|
|
(prefs/set-pref! pref val))
|
|
|
|
; -- deprecated API ---------------------------------------------------------------------------------------------------------
|
|
|
|
(defn enable! []
|
|
(.warn (context/get-console) (str "devtools.core/enable! was removed "
|
|
"and has no effect in " (make-lib-info) " "
|
|
"=> remove the call")))
|
|
|
|
(defn disable! []
|
|
(.warn (context/get-console) (str "devtools.core/disable! was removed "
|
|
"and has no effect in " (make-lib-info) " "
|
|
"=> remove the call")))
|
|
|
|
(defn set-single-feature! [_feature _val]
|
|
(.warn (context/get-console) (str "devtools.core/set-single-feature! was removed "
|
|
"and has no effect in " (make-lib-info) " "
|
|
"=> use (devtools.core/install! features) to install custom features")))
|
|
|
|
(defn enable-single-feature! [_feature]
|
|
(.warn (context/get-console) (str "devtools.core/enable-single-feature! was removed "
|
|
"and has no effect in " (make-lib-info) " "
|
|
"=> use (devtools.core/install! features) to install custom features")))
|
|
|
|
(defn disable-single-feature! [_feature]
|
|
(.warn (context/get-console) (str "devtools.core/disable-single-feature! was removed "
|
|
"and has no effect in " (make-lib-info) " "
|
|
"=> use (devtools.core/install! features) to install custom features")))
|
|
|
|
(defn enable-feature! [& _features]
|
|
(.warn (context/get-console) (str "devtools.core/enable-feature! was removed "
|
|
"and has no effect in " (make-lib-info) " "
|
|
"=> use (devtools.core/install! features) to install custom features")))
|
|
|
|
(defn disable-feature! [& _features]
|
|
(.warn (context/get-console) (str "devtools.core/disable-feature! was removed "
|
|
"and has no effect in " (make-lib-info) " "
|
|
"=> use (devtools.core/install! features) to install custom features")))
|
|
|
|
(defn single-feature-available? [_feature]
|
|
(.warn (context/get-console) (str "devtools.core/single-feature-available? was removed "
|
|
"and has no effect in " (make-lib-info) " "
|
|
"=> use devtools.core/is-feature-available? instead")))
|
|
|
|
(defn feature-available? [& _features]
|
|
(.warn (context/get-console) (str "devtools.core/feature-available? was removed "
|
|
"and has no effect in " (make-lib-info) " "
|
|
"=> use devtools.core/is-feature-available? instead")))
|