Skip to content

Instantly share code, notes, and snippets.

@swlkr
Last active July 27, 2021 17:18
Show Gist options
  • Select an option

  • Save swlkr/3f346c66410e5c60c59530c4413a248e to your computer and use it in GitHub Desktop.

Select an option

Save swlkr/3f346c66410e5c60c59530c4413a248e to your computer and use it in GitHub Desktop.
(ns switch
(:require [clojure.pprint :as pprint]))
(defn project-clj-map [filename]
(->> (slurp filename)
(read-string)
(drop 1)
(partition 2)
(map vec)
(into {})))
(defn lein-deps [filename]
(let [project-clj (project-clj-map filename)]
(get project-clj :dependencies)))
(defn edn-dep [lein-dep]
(let [[id version] lein-dep]
{id {:mvn/version version}}))
(defn edn-deps [lein-deps]
(let [deps (into {} (map edn-dep lein-deps))]
{:deps deps}))
(defn pprint-write [out-file m]
(with-open [w (clojure.java.io/writer out-file)]
(binding [*out* w]
(pprint/write m))))
(defn spit-edn-deps []
(->> (lein-deps "project.clj")
(edn-deps)
(pprint-write "deps.edn")))
(spit-edn-deps)
@ordnungswidrig

Copy link
Copy Markdown

s/unlike/I like

@swlkr

swlkr commented Jan 10, 2018

Copy link
Copy Markdown
Author

Yeah I should make it a proper lein plugin, lein deps.edn or something like that?

@martinklepsch

martinklepsch commented Jan 11, 2018

Copy link
Copy Markdown

If you change this:

(defn -main []
  (spit-edn-deps))

into this

(spit-edn-deps)

you can run it with

curl https://gist.githubusercontent.com/swlkr/[...]/raw/[...]/switch.clj | clj -

or download the file first and run clj switch.clj

@swlkr

swlkr commented Jan 12, 2018

Copy link
Copy Markdown
Author

I just changed it, that's incredible

@Kah0ona

Kah0ona commented Jan 18, 2018

Copy link
Copy Markdown

that is, indeed, amazing. Simple yet effective. How cool.

@deas

deas commented Feb 4, 2018

Copy link
Copy Markdown

@ordnungswidrig @swlkr I'd go so far and say leiningen core should be shipping this functionality.

@AndreaCrotti

Copy link
Copy Markdown

FYI with a couple of minor changes I made this script work with babaksha https://github.com/borkdude/babashka which makes it run reaaally fast

#!/usr/bin/env bb

(defn project-clj-map [filename]
  (->> (slurp filename)
       (read-string)
       (drop 1)
       (partition 2)
       (map vec)
       (into {})))

(defn lein-deps [filename]
  (let [project-clj (project-clj-map filename)]
    (get project-clj :dependencies)))

(defn edn-dep [lein-dep]
  (let [[id version] lein-dep]
    {id {:mvn/version version}}))

(defn edn-deps [lein-deps]
  (let [deps (into {} (map edn-dep lein-deps))]
    {:deps deps}))

(defn pprint-write [out-file m]
  (with-open [w (clojure.java.io/writer out-file)]
    (binding [*out* w]
      (clojure.pprint/pprint m))))

(defn spit-edn-deps []
  (->> (lein-deps "project.clj")
       (edn-deps)
       (pprint-write "deps.edn")))


(spit-edn-deps)

@swlkr

swlkr commented Mar 30, 2020

Copy link
Copy Markdown
Author

nice! babashka is incredible

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment