-
Notifications
You must be signed in to change notification settings - Fork 21
Restyler Versions
Restyled wraps off-the-shelf auto-formatting tools as transparently as possible. Therefore, the version of the underlying tool has a large impact on the behavior you'll experience using our service. To help this, we offer a few configuration points in your .restyled.yaml
that affect what versions of things will run on your PRs.
When the Restyler process runs, it fetches a manifest of all known Restylers, we call this a "Restylers set". These sets are named and specified by the restylers_version
key in your .restyled.yaml
. By default, everyone gets stable
.
In the set, each Restyler has an image
key that points to the specific, tagged Docker image to run for that Restyler. These tags are named after the version of the underlying auto-formatter that image will run, so while we may add our own prefixes or suffixes, you should always be able to infer an auto-formatter version from these tags directly.
We are happy to build and push images in all sorts of configurations, and we will (as much as possible) never remove a pushed tag. This means there may be many tags available not present in any versioned set. You can explore what is available for a specific Restyler by viewing its Docker Hub page directly.
TL;DR:
- Use
restylers_version
to control the overall set of Restyler versions - Optionally, use
restylers[$name].image
to specify a specific Restyler version to use - See Available Restylers for appropriate values
The following are some common reasons to make use of these configuration points:
In a specific Restyler, you can re-specify its default image:
restylers:
- brittany:
image:
tag: v0.11.0.0
From then on, regardless of how the default Restylers set changes, this Restyler will always run this image, until you change it.
Note: the above changes only the
tag
field of the image and is equivalent toimage: restyled/restyler-brittany:v0.11.0.0Other available fields are
registry
andname
.
Before making updates to stable
, we release to a different "channel" called dev
:
restylers_version: dev
When/if we're making major updates, we will likely release a Restyler image before making it a part of any released set, and certainly before making it the default. You can opt in to trying it out ahead of time through its image
key:
restylers:
- brittany:
image:
tag: vX.Y.Z-beta
Users may want to always run the latest version of some formatter, but don't want to implicitly update to a new major version, as that could break things they're not ready to fix. To support this use-case, Restyled builds and releases so-called "series images".
If a given auto-formatter uses semantic versioning, its Restyler images will have tags matching vX.Y.Z
. Provided that's the case (true for most, but not all), we will also maintain images tagged vX
and vX.Y
as the latest version within that major and major-minor series respectively. Users can then rely on these tags to receive updates as they are released, but not unexpectedly update to a new major (or major-minor) version:
restylers:
- clang-format:
image:
tag: v16
One consequence of this system is that whatever you set as a restylers[$name].image
will be pulled and run as the Restyler. This means you can maintain and use your own images:
restylers:
- brittany:
image: pbrisbin/restyler-brittany:latest
As long as the image is publicly available (and functions properly as a Restyler), this will work. This is a great way to test fixes yourself before submitting PRs.
NOTE: Restylers have direct access to the source code they're restyling. While they are run in an isolated working directory and with --net=none
as safe guards (among other things), you should still fully trust the image you are specifying here.
Removed