rewrite-clj
rewrite-clj copied to clipboard
Rewrite Clojure code and edn
:notitle: // num-contributors is updated automatically by doc-readme-update bb task :num-contributors: 56 :figure-caption!: :imagesdir: ./doc :project-src-coords: clj-commons/rewrite-clj :project-mvn-coords: rewrite-clj/rewrite-clj :workflow-url: https://github.com/{project-src-coords}/actions/workflows :canary-tested: 🐥 :canary-needed-patch: 🩹 :not-canary-tested: 📍
image:rewrite-clj-logo.png[rewrite-clj,270,60]
https://cljdoc.org/d/{project-mvn-coords}/CURRENT[image:https://cljdoc.org/badge/{project-mvn-coords}[cljdoc]] {workflow-url}/unit-test.yml[image:{workflow-url}/unit-test.yml/badge.svg[Unit Tests]] {workflow-url}/libs-test.yml[image:{workflow-url}/libs-test.yml/badge.svg[Libs Test]] {workflow-url}/native-image-test.yml[image:{workflow-url}/native-image-test.yml/badge.svg[Native Image Tests]] https://codecov.io/gh/{project-src-coords}[image:https://codecov.io/gh/{project-src-coords}/branch/main/graph/badge.svg[Code Coverage]] https://clojurians.slack.com/messages/CHB5Q2XUJ[image:https://img.shields.io/badge/slack-join_chat-brightgreen.svg[Join chat]] https://clojars.org/rewrite-clj[image:https://img.shields.io/clojars/v/rewrite-clj.svg[Clojars project]] https://babashka.org[image:https://raw.githubusercontent.com/babashka/babashka/master/logo/built-in-badge.svg[bb built-in]] link:#contributors[image:https://img.shields.io/badge/all_contributors-{num-contributors}-blueviolet.svg?style=flat[Contributors]]
A library that reads and writes Clojure, ClojureScript and https://github.com/edn-format/edn[EDN] from Clojure and ClojureScript in a whitespace and comment preserving way.
== Status
Rewrite-clj v1 has been successfully and widely adopted.
See https://github.com/clj-commons/rewrite-clj/projects/1[project page for current priorities].
== Docs
- link:doc/01-user-guide.adoc[User Guide]
- link:doc/02-developer-guide.adoc[Developer Guide]
- Design ** link:doc/design/01-merging-rewrite-clj-and-rewrite-cljs.adoc[Merging rewrite-clj and rewrite-cljs]
- link:doc/03-faq.adoc[FAQ]
[[used-in]] == Used In...
Some projects using rewrite-clj v1
- https://github.com/xsc/ancient-clj[ancient-clj] {canary-tested} - Version Metadata Retrieval for Maven Artifacts
- https://github.com/liquidz/antq[antq] {canary-tested} - Point out your outdated dependencies // we already do sci testing and borkdude runs his own copies of rewrite-clj tests against bb:
- https://github.com/babashka/babashka[babashka] {not-canary-tested} - Native, fast starting Clojure interpreter for scripting
- https://github.com/borkdude/carve[carve] {canary-tested} - Carve out the essentials of your Clojure app // no unit tests:
- https://github.com/lambdaisland/classpath[classpath] {not-canary-tested} - Classpath/classloader/deps.edn related utilities
- https://github.com/nextjournal/clerk[clerk] {canary-tested} - Local-First Notebooks for Clojure
- https://github.com/kurtharriger/clj-mergetool[clj-mergetool] {canary-tested} - Smarter git mergetool for clojure and edn
- https://github.com/weavejester/cljfmt[cljfmt] {canary-tested} - A tool for formatting Clojure code
- https://github.com/greglook/cljstyle[cljstyle] {canary-tested} - A tool for formatting Clojure code
- https://github.com/clojure-lsp/clojure-lsp[clojure-lsp] {canary-tested} - Language Server (LSP) for Clojure // repo is not version tagged:
- https://github.com/mauricioszabo/duck-repled[duck-repled] {not-canary-tested} - Transform your REPL interation into Pathom queries // repo is not version tagged:
- https://github.com/kit-clj/kit[kit] {not-canary-tested} - Lightweight, modular framework for scalable web development in Clojure
- https://github.com/FiV0/kusonga[kusonga] {canary-tested} - Renaming and moving namespaces in Clojure(script)
- https://github.com/clojure-emacs/refactor-nrepl[refactor-nrepl] {canary-tested} - nREPL middleware to support refactorings in an editor agnostic way
- https://github.com/pink-gorilla/reval[reval] {canary-tested} -reproduceable eval - namespace eval and storage with browser ui
- https://github.com/borkdude/rewrite-edn[rewrite-edn] {canary-tested} - Utility lib on top of rewrite-clj with common operations to update EDN while preserving whitespace and comments
- https://github.com/matthewdowney/rich-comment-tests[rich-comment-tests] {canary-tested} - Turns rich comment forms into tests
- https://github.com/lread/test-doc-blocks[test-doc-blocks] {canary-tested} - Test AsciiDoc and CommonMark code blocks found in articles and docstrings
- https://github.com/nubank/umschreiben-clj[umschreiben-clj] {canary-tested} - Rewrite utilities for refactoring clojure files
- https://github.com/kkinnear/zprint[zprint] {canary-tested} - Executables, uberjar, and library to beautifully format Clojure and Clojurescript source code and s-expressions
Some projects using rewrite-clj v0 and/or rewrite-cljs
- https://github.com/Olical/depot[depot] {canary-tested} {canary-needed-patch} - Find newer versions of your dependencies in your deps.edn file // unit tests (unpatched after clone), at time of this writing, are failing for confair
- https://github.com/magnars/confair[confair] {not-canary-tested} - A configuration library for Clojure // tests rely on datomic-pro
- https://github.com/ivarref/gen-fn[gen-fn] {not-canary-tested} - Generate Datomic function literals from regular Clojure namespaces
- https://github.com/jonase/kibit[kibit] {canary-tested} - There's a function for that!
- https://github.com/xsc/lein-ancient[lein-ancient] {canary-tested} - Check your Projects for outdated Dependencies
- https://github.com/benedekfazekas/mranderson[mranderson] {canary-tested} - Dependency inlining and shadowing
- https://github.com/jstepien/mutant[mutant] {canary-tested} - Mutation testing for Clojure // could not easily figure out how to run tests:
- https://github.com/mauricioszabo/repl-tooling[repl-tooling] {not-canary-tested} - a base package for Clojure's editor tooling // tests frequently broken, skipping for now:
- https://github.com/atomist-skills/update-leiningen-dependencies-skill[update-leiningen-dependencies-skill] {not-canary-tested} - Track project.clj dependencies across different projects
Have an update? Let us know!
{canary-tested} [.small]#canary tested against rewrite-clj v1 link:doc/02-developer-guide.adoc#libs-test[lib test suite]# + {canary-needed-patch} [.small]#source required minor change to work with rewrite-clj v1# + {not-canary-tested} [.small]#no easy-peasy way to run automated unit tests found for this project#
== Versioning
Rewrite-clj versioning scheme is: major.minor.release-test-qualifier
majorincrements when a non alpha release API has been broken - something, as a rule, we'd like to avoid.minorincrements to convey significant new features have been added.releaseindicates small changes or bug fixes - starting with v1.1, it is the rewrite-clj release count over the life of rewrite-clj.test-qualifieris absent for stable releases. Can bealpha,beta,rc1, etc.
[[contributors]] == People
A big thank you to all the people who have contributed to rewrite-clj!
=== Contributors // Contributors updated by script, do not edit // AUTO-GENERATED:CONTRIBUTORS-START :imagesdir: ./doc/generated/contributors [.float-group]
image:eraserhd.png[eraserhd,role="left",width=250,link="https://github.com/eraserhd"] image:vemv.png[vemv,role="left",width=250,link="https://github.com/vemv"] image:kkinnear.png[kkinnear,role="left",width=250,link="https://github.com/kkinnear"] image:mainej.png[mainej,role="left",width=250,link="https://github.com/mainej"] image:plexus.png[plexus,role="left",width=250,link="https://github.com/plexus"] image:slipset.png[slipset,role="left",width=250,link="https://github.com/slipset"] image:sogaiu.png[sogaiu,role="left",width=250,link="https://github.com/sogaiu"] image:bbatsov.png[bbatsov,role="left",width=250,link="https://github.com/bbatsov"] image:danielcompton.png[danielcompton,role="left",width=250,link="https://github.com/danielcompton"] image:ericdallo.png[ericdallo,role="left",width=250,link="https://github.com/ericdallo"] image:FiV0.png[FiV0,role="left",width=250,link="https://github.com/FiV0"] image:jespera.png[jespera,role="left",width=250,link="https://github.com/jespera"] image:NoahTheDuke.png[NoahTheDuke,role="left",width=250,link="https://github.com/NoahTheDuke"] image:PEZ.png[PEZ,role="left",width=250,link="https://github.com/PEZ"] image:snoe.png[snoe,role="left",width=250,link="https://github.com/snoe"] image:AndreaCrotti.png[AndreaCrotti,role="left",width=250,link="https://github.com/AndreaCrotti"] image:anmonteiro.png[anmonteiro,role="left",width=250,link="https://github.com/anmonteiro"] image:arrdem.png[arrdem,role="left",width=250,link="https://github.com/arrdem"] image:awb99.png[awb99,role="left",width=250,link="https://github.com/awb99"] image:brian-dawn.png[brian-dawn,role="left",width=250,link="https://github.com/brian-dawn"] image:BTowersCoding.png[BTowersCoding,role="left",width=250,link="https://github.com/BTowersCoding"] image:doby162.png[doby162,role="left",width=250,link="https://github.com/doby162"] image:drorbemet.png[drorbemet,role="left",width=250,link="https://github.com/drorbemet"] image:expez.png[expez,role="left",width=250,link="https://github.com/expez"] image:fazzone.png[fazzone,role="left",width=250,link="https://github.com/fazzone"] image:ferdinand-beyer.png[ferdinand-beyer,role="left",width=250,link="https://github.com/ferdinand-beyer"] image:green-coder.png[green-coder,role="left",width=250,link="https://github.com/green-coder"] image:guoyongxin.png[guoyongxin,role="left",width=250,link="https://github.com/guoyongxin"] image:ikappaki.png[ikappaki,role="left",width=250,link="https://github.com/ikappaki"] image:immoh.png[immoh,role="left",width=250,link="https://github.com/immoh"] image:ivarref.png[ivarref,role="left",width=250,link="https://github.com/ivarref"] image:luxbock.png[luxbock,role="left",width=250,link="https://github.com/luxbock"] image:martinklepsch.png[martinklepsch,role="left",width=250,link="https://github.com/martinklepsch"] image:matanster.png[matanster,role="left",width=250,link="https://github.com/matanster"] image:mhuebert.png[mhuebert,role="left",width=250,link="https://github.com/mhuebert"] image:mikekap.png[mikekap,role="left",width=250,link="https://github.com/mikekap"] image:mjayprateek.png[mjayprateek,role="left",width=250,link="https://github.com/mjayprateek"] image:msgodf.png[msgodf,role="left",width=250,link="https://github.com/msgodf"] image:mynomoto.png[mynomoto,role="left",width=250,link="https://github.com/mynomoto"] image:optevo.png[optevo,role="left",width=250,link="https://github.com/optevo"] image:rfhayashi.png[rfhayashi,role="left",width=250,link="https://github.com/rfhayashi"] image:rgkirch.png[rgkirch,role="left",width=250,link="https://github.com/rgkirch"] image:RickMoynihan.png[RickMoynihan,role="left",width=250,link="https://github.com/RickMoynihan"] image:SevereOverfl0w.png[SevereOverfl0w,role="left",width=250,link="https://github.com/SevereOverfl0w"] image:shaunlebron.png[shaunlebron,role="left",width=250,link="https://github.com/shaunlebron"] image:shaunxcode.png[shaunxcode,role="left",width=250,link="https://github.com/shaunxcode"] image:shmish111.png[shmish111,role="left",width=250,link="https://github.com/shmish111"] image:stathissideris.png[stathissideris,role="left",width=250,link="https://github.com/stathissideris"] image:swannodette.png[swannodette,role="left",width=250,link="https://github.com/swannodette"] image:theronic.png[theronic,role="left",width=250,link="https://github.com/theronic"] image:weavejester.png[weavejester,role="left",width=250,link="https://github.com/weavejester"] image:zcaudate.png[zcaudate,role="left",width=250,link="https://github.com/zcaudate"]
// AUTO-GENERATED:CONTRIBUTORS-END
=== Founders // Founders updated by script, do not edit // AUTO-GENERATED:FOUNDERS-START :imagesdir: ./doc/generated/contributors [.float-group]
image:rundis.png[rundis,role="left",width=250,link="https://github.com/rundis"] image:xsc.png[xsc,role="left",width=250,link="https://github.com/xsc"]
// AUTO-GENERATED:FOUNDERS-END
=== Current maintainers // Maintainers updated by script, do not edit // AUTO-GENERATED:MAINTAINERS-START :imagesdir: ./doc/generated/contributors [.float-group]
image:borkdude.png[borkdude,role="left",width=250,link="https://github.com/borkdude"] image:lread.png[lread,role="left",width=250,link="https://github.com/lread"]
// AUTO-GENERATED:MAINTAINERS-END
== link:CHANGELOG.adoc[Changes]
== Licences We honor the original MIT license from link:LICENSE[rewrite-clj v0].
Code has been merged/adapted from:
- https://github.com/clj-commons/rewrite-cljs/blob/master/LICENSE[rewrite-cljs which has an MIT license]
- https://github.com/clojure/clojure/blob/master/src/clj/clojure/zip.clj[clojure zip] which is covered by https://clojure.org/community/license[Eclipse Public License 1.0]