Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/clj-commons/rewrite-clj

Rewrite Clojure code and edn
https://github.com/clj-commons/rewrite-clj

Last synced: about 1 hour ago
JSON representation

Rewrite Clojure code and edn

Awesome Lists containing this project

README

        

:notitle:
// num-contributors is updated automatically by doc-readme-update bb task
:num-contributors: 59
: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/orgs/clj-commons/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/fabricate-site/adorn[adorn] {canary-tested} - Extensible conversion of Clojure code to Hiccup forms
* 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
* https://github.com/jonase/kibit[kibit] {canary-tested} - There's a function for that!
// 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] {not-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/NoahTheDuke/splint[splint] {canary-tested} - A Clojure linter focused on style and code shape
* 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/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`

* `major` increments when a non alpha release API has been broken - something, as a rule, we'd like to avoid.
* `minor` increments to convey significant new features have been added.
* `release` indicates small changes or bug fixes - starting with v1.1, it is the rewrite-clj release count over the life of rewrite-clj.
* `test-qualifier` is absent for stable releases.
Can be `alpha`, `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:frenchy64.png[frenchy64,role="left",width=250,link="https://github.com/frenchy64"]
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:bobbicodes.png[bobbicodes,role="left",width=250,link="https://github.com/bobbicodes"]
image:brian-dawn.png[brian-dawn,role="left",width=250,link="https://github.com/brian-dawn"]
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:matanox.png[matanox,role="left",width=250,link="https://github.com/matanox"]
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:mrkam2.png[mrkam2,role="left",width=250,link="https://github.com/mrkam2"]
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:p4ulcristian.png[p4ulcristian,role="left",width=250,link="https://github.com/p4ulcristian"]
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]