diff --git a/autoload/iced/script.vim b/autoload/iced/script.vim index 9389144c5..34e4828d4 100644 --- a/autoload/iced/script.vim +++ b/autoload/iced/script.vim @@ -13,16 +13,5 @@ function! iced#script#empty_port(callback) abort return iced#system#get('job_out').redir(command, a:callback) endfunction -function! iced#script#shadow_cljs_validation(shadow_cljs_config_path, callback) abort - call s:setup() - let command = printf('bb %s/clj/script/shadow_cljs_validation.clj %s %s', - \ g:vim_iced_home, - \ a:shadow_cljs_config_path, - \ g:vim_iced_home, - \ ) - - return iced#system#get('job_out').redir(command, a:callback) -endfunction - let &cpoptions = s:save_cpo unlet s:save_cpo diff --git a/clj/script/shadow_cljs_validation.clj b/clj/script/shadow_cljs_validation.clj deleted file mode 100644 index d56113d25..000000000 --- a/clj/script/shadow_cljs_validation.clj +++ /dev/null @@ -1,83 +0,0 @@ -(ns shadow-cljs-validation - (:require - [clojure.edn :as edn] - [clojure.java.io :as io] - [clojure.set :as set] - [clojure.string :as str])) - -(defn read-edn - [path] - (-> path slurp edn/read-string)) - -(defn normalize-deps - [[name ver]] - (let [qualified-name (if (str/includes? name "/") - name - (symbol (str name) (str name)))] - (if (map? ver) - [qualified-name (:mvn/version ver)] - [qualified-name ver]))) - -(defn filter-and-normalize-deps - [required-deps deps] - (->> deps - (map normalize-deps) - (filter (comp required-deps first)) - set)) - -(defn extract-shadow-cljs-dependency-set - [required-deps shadow-cljs-config-path shadow-edn] - (cond - ;; c.f. https://shadow-cljs.github.io/docs/UsersGuide.html#deps-edn - (contains? shadow-edn :deps) - (let [conf (:deps shadow-edn) - edn (read-edn (io/file (.getParent (io/file shadow-cljs-config-path)) - "deps.edn"))] - (if-let [aliases (:aliases conf)] - (->> (mapcat #(get-in edn [:aliases % :extra-deps]) aliases) - (filter-and-normalize-deps required-deps)) - (->> (:deps edn) - (filter-and-normalize-deps required-deps)))) - - ;; c.f. https://shadow-cljs.github.io/docs/UsersGuide.html#Leiningen - ;; TODO - (contains? shadow-edn :lein) - #{} - - :else - (->> (:dependencies shadow-edn) - (filter-and-normalize-deps required-deps)))) - -(defn differences - [shadow-cljs-config-path vim-iced-home-dir] - (let [iced-deps-edn (read-edn (io/file vim-iced-home-dir "deps.edn")) - shadow-cljs-edn (read-edn shadow-cljs-config-path) - required-deps (->> (:deps iced-deps-edn) - (keep (comp #(when (not= % 'nrepl/nrepl) %) first)) - set) - iced-dependency-set (->> (:deps iced-deps-edn) - (filter-and-normalize-deps required-deps)) - shadow-dependency-set (->> shadow-cljs-edn - (extract-shadow-cljs-dependency-set - required-deps shadow-cljs-config-path))] - {:dependencies (set/difference - iced-dependency-set - shadow-dependency-set) - :middlewares (set/difference - (set (map symbol (:__middlewares__ iced-deps-edn))) - (set (get-in shadow-cljs-edn [:nrepl :middleware])))})) - -(defn -main - [args] - (when (not= 2 (count args)) - (System/exit 1)) - - (let [{:keys [dependencies middlewares]} (apply differences args)] - (str/join - "\n" - (concat - (map #(apply format "Missing dependency: %s => %s" %) dependencies) - (map #(format "Missing middleware: %s" %) middlewares))))) - -(when *command-line-args* - (-main *command-line-args*))