diff --git a/src/aaaa_this_has_to_be_first/because_patches.clj b/src/aaaa_this_has_to_be_first/because_patches.clj index 90401948..b8651a25 100644 --- a/src/aaaa_this_has_to_be_first/because_patches.clj +++ b/src/aaaa_this_has_to_be_first/because_patches.clj @@ -3,36 +3,46 @@ (:require [babashka.impl.patches.datafy] [babashka.impl.pprint])) -;; Enable this for scanning requiring-resolve usage: -;; --- - -(def old-require require) -(def old-resolve resolve) - -(def our-requiring-resolve (fn [sym] - (let [ns (symbol (namespace sym))] - (old-require ns) - (resolve sym)))) - -(defn static-requiring-resolve [form _ _] - (prn :req-resolve form :args (rest form)) - `(let [res# (our-requiring-resolve ~@(rest form))] - res#)) - -(alter-var-root #'requiring-resolve (constantly @#'static-requiring-resolve)) -(doto #'requiring-resolve (.setMacro)) -;; --- - -;; Enable this for detecting literal usages of require -;; --- - -(defn static-require [& [&form _bindings & syms]] - (when (meta &form) - (prn :require &form (meta &form) *file*)) - `(old-require ~@syms)) -(alter-var-root #'require (constantly @#'static-require)) -(doto #'require (.setMacro)) - -(alter-var-root #'clojure.core/serialized-require (constantly (fn [& args] - (prn :serialized-req args)))) +;; Enable this for scanning requiring usage: +(def enable-require-scan + "(do + (def old-require require) + (def old-resolve resolve) + + (def our-requiring-resolve (fn [sym] + (let [ns (symbol (namespace sym))] + (old-require ns) + (old-resolve sym)))) + + (defn static-requiring-resolve [form _ _] + (prn :req-resolve form :args (rest form)) + `(let [res# (our-requiring-resolve ~@(rest form))] + res#)) + + (alter-var-root #'requiring-resolve (constantly @#'static-requiring-resolve)) + (doto #'requiring-resolve (.setMacro)) + + (defn static-require [& [&form _bindings & syms]] + (when (meta &form) + (prn :require &form (meta &form) *file*)) + `(old-require ~@syms)) + (alter-var-root #'require (constantly @#'static-require)) + (doto #'require (.setMacro)) + + (alter-var-root #'clojure.core/serialized-require (constantly (fn [& args] + (prn :serialized-req args))))) + + + + (defn static-resolve [& [&form _bindings & syms]] + (when (meta &form) + (prn :require &form (meta &form) *file*)) + `(old-resolve ~@syms)) + (alter-var-root #'resolve (constantly @#'static-resolve)) + (doto #'resolve (.setMacro)) +") + + +(when (System/getenv "BABASHKA_REQUIRE_SCAN") + (load-string enable-require-scan)) ;; ---