allwrite¶
allwrite is a CLI tool and a collection of OpenRewrite recipes for automated code transformations across YAML, Gradle, Java/Kotlin, and Spring projects.
It wraps OpenRewrite's runtime into a CLI that can run recipes by name, integrate with GitHub Actions, and work with Dependabot pull requests.
How is allwrite different from OpenRewrite CLI?¶
OpenRewrite provides the transformation engine and a broad recipe ecosystem. allwrite builds an opinionated workflow on top of it: it adds human-friendly recipe names, bundles curated recipes, supports private recipes from external JARs, and integrates recipe execution with GitHub Actions and Dependabot. It is not a replacement for OpenRewrite; it makes selected OpenRewrite capabilities easier to discover and automate.
Why allwrite?¶
Use friendly recipe names instead of fully qualified Java class names, combine OpenRewrite's ecosystem with project-specific migrations, and package private recipes as external JARs.
What is included¶
allwrite is a modular project, utilizing dependency injection capabilities from the Koin framework.
It consists of the following Gradle modules (that may contain one or more Koin modules):
- allwrite-api - published API with incoming port interfaces (
RecipeExecutor,RecipeSource,RecipeCoordinates) for interacting withallwrite-runtime - allwrite-spi - published SPI with base classes for recipe authors (
AllwriteRecipe,AllwriteScanningRecipe,RecipeMetadata) - allwrite-cli - provides both Application and Infrastructure layers for the CLI app
- allwrite-runtime - provides core implementation (implements
allwrite-apiinterfaces); equivalent of the Domain layer - allwrite-recipes - contains OpenRewrite recipes to be executed by
allwrite-cli - allwrite-completions - provides annotation processors generating CLI auto-completions