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 297c99e4..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: -;; ;; --- +;; Enable this for scanning requiring usage: +(def enable-require-scan + "(do + (def old-require require) + (def old-resolve resolve) -;; (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)))) -;; (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#)) -;; (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)) -;; (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)) -;; ;; Enable this for detecting literal usages of require -;; ;; --- + (alter-var-root #'clojure.core/serialized-require (constantly (fn [& args] + (prn :serialized-req args))))) -;; (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)) +;; ---