Class FormatExtension
- Direct Known Subclasses:
Antlr4Extension
,BaseGroovyExtension
,BaseKotlinExtension
,CppExtension
,CssExtension
,FlexmarkExtension
,FreshMarkExtension
,GherkinExtension
,GoExtension
,JavaExtension
,JavascriptExtension
,JsonExtension
,PomExtension
,ProtobufExtension
,PythonExtension
,ScalaExtension
,ShellExtension
,SqlExtension
,TypescriptExtension
,YamlExtension
spotless{Name}Check
and spotless{Name}Apply
task.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclass
Generic Biome formatter step that detects the language of the input file from the file name.class
class
class
class
Created bylicenseHeader(String, String)
orlicenseHeaderFile(Object, String)
.static class
class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final List
<FormatterStep> The steps that need to be added.protected FileCollection
The files to be formatted = (target - targetExclude).protected FileCollection
The files to be formatted = (target - targetExclude).protected String
The value from which files will be excluded if their content contain it. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
addStep
(FormatterStep newStep) Adds a new step.void
addStep
(Function<Provisioner, FormatterStep> createStepFn) Adds a new step that requires a Provisioner.biome()
Defaults to downloading the default Biome version from the network.Downloads the given Biome version from the network.void
bumpThisNumberIfACustomStepChanges
(int number) An optional performance optimization if you are using any of thecustom
methods.Uses the default version of clang-format.clangFormat
(String version) Uses the specified version of clang-format.void
Clears all of the existing steps.createIndependentApplyTask
(String taskName) Eager version ofcreateIndependentApplyTaskLazy(String)
createIndependentApplyTaskLazy
(String taskName) Creates an independentSpotlessApply
for (very) unusual circumstances.void
custom
(String name, FormatterFunc formatter) Adds a custom step.void
Adds a custom step.eclipseWtp
(com.diffplug.spotless.extra.wtp.EclipseWtpFormatterStep type) eclipseWtp
(com.diffplug.spotless.extra.wtp.EclipseWtpFormatterStep type, String version) void
Sets encoding to use (defaults toSpotlessExtension.getEncoding()
).void
Ensures that files end with a single newline.void
forbidRegex
(String name, String regex, String lintDetail) A regex which generates a lint.Returns the encoding to use (defaults toSpotlessExtension.getEncoding()
.protected int
getExistingStepIdx
(String stepName) Returns the index of the existing step with the given name, or -1 if no such step exists.Returns the line endings to use (defaults toSpotlessExtension.getLineEndings()
.protected Project
Returns the project that this extension is attached to.idea()
void
ignoreErrorForPath
(String relativePath) Deprecated.void
ignoreErrorForStep
(String stepName) Deprecated.UsesuppressLintsFor(Action)
instead.void
Deprecated.void
indentWithSpaces
(int numSpacesPerTab) Deprecated.void
Deprecated.void
indentWithTabs
(int tabToSpaces) Deprecated.protected boolean
isLicenseHeaderStep
(FormatterStep formatterStep) void
Ensures that the files are indented using tabs.void
leadingSpacesToTabs
(int spacesPerTab) Ensures that the files are indented using tabs.void
Ensures that the files are indented using spaces.void
leadingTabsToSpaces
(int spacesPerTab) Ensures that the files are indented using spaces.licenseHeader
(String licenseHeader, String delimiter) licenseHeaderFile
(Object licenseHeaderFile, String delimiter) void
Ensures formatting of files via native binary.protected GradleException
protected final FileCollection
parseTarget
(Object target) FileCollections pass through raw.prettier()
Uses the default version of prettier.Uses the specified version of prettier.Uses exactly the npm packages specified in the map.protected final Provisioner
void
ratchetFrom
(String ratchetFrom) void
replace
(String name, CharSequence original, CharSequence after) Highly efficient find-replace char sequence.void
replaceRegex
(String name, String regex, String replacement) Highly efficient find-replace regex.protected void
replaceStep
(FormatterStep replacementStep) Replaces the given step.void
setEncoding
(String name) Sets the encoding to use (defaults toSpotlessExtension.getEncoding()
.void
setEncoding
(Charset charset) Sets the encoding to use (defaults toSpotlessExtension.getEncoding()
.void
setLineEndings
(LineEnding lineEndings) Sets the line endings to use (defaults toSpotlessExtension.getLineEndings()
.void
setRatchetFrom
(String ratchetFrom) Allows you to override the value from the parentSpotlessExtension.setRatchetFrom(String)
for this specific format.protected void
setupTask
(SpotlessTask task) Sets up a format task according to the values in this extension.void
suppressLintsFor
(Action<LintSuppression> lintSuppression) Suppresses any lints which meet the supplied criteria.void
Sets which files should be formatted.void
targetExclude
(Object... targets) Sets which files will be excluded from formatting.void
targetExcludeIfContentContains
(String string) Excludes all files whose content containsstring
.void
Excludes all files whose content contains the given regex.void
Disables formatting betweenspotless:off
andspotless:on
.void
toggleOffOn
(String off, String on) Disables formatting between the given tags.void
Undoes all previous calls totoggleOffOn()
andtoggleOffOn(String, String)
.void
toggleOffOnRegex
(String regex) Given a regex with *exactly one capturing group*, disables formatting inside that captured group.void
Removes trailing whitespace.<T extends FormatExtension>
voidSame aswithinBlocks(String, String, String, Action)
, except you can specify any language-specific subclass ofFormatExtension
to get language-specific steps.void
withinBlocks
(String name, String open, String close, Action<FormatExtension> configure) spotless { format 'examples', { target '*.md' withinBlocks 'javascript examples', '\n```javascript\n', '\n```\n', { prettier().config(['parser': 'javascript']) } ...<T extends FormatExtension>
voidwithinBlocksRegex
(String name, String regex, Class<T> clazz, Action<T> configure) Same aswithinBlocksRegex(String, String, Action)
, except you can specify any language-specific subclass ofFormatExtension
to get language-specific steps.void
withinBlocksRegex
(String name, String regex, Action<FormatExtension> configure) Same aswithinBlocks(String, String, String, Action)
, except instead of an open/close pair, you specify a regex with exactly one capturing group.
-
Field Details
-
target
The files to be formatted = (target - targetExclude). -
targetExclude
The files to be formatted = (target - targetExclude). -
targetExcludeContentPattern
The value from which files will be excluded if their content contain it. -
steps
The steps that need to be added.
-
-
Constructor Details
-
FormatExtension
-
-
Method Details
-
provisioner
-
getLineEndings
Returns the line endings to use (defaults toSpotlessExtension.getLineEndings()
. -
setLineEndings
Sets the line endings to use (defaults toSpotlessExtension.getLineEndings()
. -
getEncoding
Returns the encoding to use (defaults toSpotlessExtension.getEncoding()
. -
setEncoding
Sets the encoding to use (defaults toSpotlessExtension.getEncoding()
. -
getRatchetFrom
- See Also:
-
setRatchetFrom
Allows you to override the value from the parentSpotlessExtension.setRatchetFrom(String)
for this specific format. -
ratchetFrom
- See Also:
-
setEncoding
Sets the encoding to use (defaults toSpotlessExtension.getEncoding()
. -
suppressLintsFor
Suppresses any lints which meet the supplied criteria. -
ignoreErrorForStep
Deprecated.UsesuppressLintsFor(Action)
instead.Ignores errors in the given step. -
ignoreErrorForPath
Deprecated.UsesuppressLintsFor(Action)
instead.Ignores errors for the given relative path. -
encoding
Sets encoding to use (defaults toSpotlessExtension.getEncoding()
). -
isLicenseHeaderStep
-
target
Sets which files should be formatted. Files to be formatted = (target - targetExclude).When this method is called multiple times, only the last call has any effect.
FileCollections pass through raw. Strings are treated as the 'include' arg to fileTree, with project.rootDir as the dir. List
are treated as the 'includes' arg to fileTree, with project.rootDir as the dir. Anything else gets passed to getProject().files(). If you pass any strings that start with "**\/*", this method will automatically filter out "build", ".gradle", and ".git" folders.
-
targetExclude
Sets which files will be excluded from formatting. Files to be formatted = (target - targetExclude).When this method is called multiple times, only the last call has any effect.
FileCollections pass through raw. Strings are treated as the 'include' arg to fileTree, with project.rootDir as the dir. List
are treated as the 'includes' arg to fileTree, with project.rootDir as the dir. Anything else gets passed to getProject().files(). -
targetExcludeIfContentContains
Excludes all files whose content containsstring
.When this method is called multiple times, only the last call has any effect.
-
targetExcludeIfContentContainsRegex
Excludes all files whose content contains the given regex.When this method is called multiple times, only the last call has any effect.
-
parseTarget
FileCollections pass through raw. Strings are treated as the 'include' arg to fileTree, with project.rootDir as the dir. Listare treated as the 'includes' arg to fileTree, with project.rootDir as the dir. Anything else gets passed to getProject().files(). -
addStep
Adds a new step. -
addStep
Adds a new step that requires a Provisioner. -
getExistingStepIdx
Returns the index of the existing step with the given name, or -1 if no such step exists. -
replaceStep
Replaces the given step. -
clearSteps
public void clearSteps()Clears all of the existing steps. -
bumpThisNumberIfACustomStepChanges
public void bumpThisNumberIfACustomStepChanges(int number) An optional performance optimization if you are using any of thecustom
methods. If you aren't explicitly callingcustom
, then this method has no effect.Spotless tracks what files have changed from run to run, so that it can run faster by only checking files which have changed, or whose formatting steps have changed. If you use the
custom
methods, then Gradle can never mark your files asup-to-date
, because it can't know if perhaps the behavior of your custom function has changed.If you set
bumpThisNumberIfACustomStepChanges( <some number> )
, then spotless will assume that the custom rules have not changed if the number has not changed. If a custom rule does change, then you must bump the number so that spotless will know that it must recheck the files it has already checked. -
custom
Adds a custom step. Receives a string with unix-newlines, must return a string with unix newlines. -
custom
Adds a custom step. Receives a string with unix-newlines, must return a string with unix newlines. -
replace
Highly efficient find-replace char sequence. -
replaceRegex
Highly efficient find-replace regex. -
forbidRegex
A regex which generates a lint. -
trimTrailingWhitespace
public void trimTrailingWhitespace()Removes trailing whitespace. -
endWithNewline
public void endWithNewline()Ensures that files end with a single newline. -
leadingTabsToSpaces
public void leadingTabsToSpaces(int spacesPerTab) Ensures that the files are indented using spaces. -
indentWithSpaces
Deprecated. -
leadingTabsToSpaces
public void leadingTabsToSpaces()Ensures that the files are indented using spaces. -
indentWithSpaces
Deprecated. -
leadingSpacesToTabs
public void leadingSpacesToTabs(int spacesPerTab) Ensures that the files are indented using tabs. -
indentWithTabs
Deprecated. -
leadingSpacesToTabs
public void leadingSpacesToTabs()Ensures that the files are indented using tabs. -
indentWithTabs
Deprecated. -
nativeCmd
Ensures formatting of files via native binary. -
licenseHeader
- Parameters:
licenseHeader
- Content that should be at the top of every file.delimiter
- Spotless will look for a line that starts with this regular expression pattern to know what the "top" is.
-
licenseHeaderFile
public FormatExtension.LicenseHeaderConfig licenseHeaderFile(Object licenseHeaderFile, String delimiter) - Parameters:
licenseHeaderFile
- Content that should be at the top of every file.delimiter
- Spotless will look for a line that starts with this regular expression pattern to know what the "top" is.
-
prettier
Uses the default version of prettier. -
prettier
Uses the specified version of prettier. -
prettier
Uses exactly the npm packages specified in the map. -
biome
Defaults to downloading the default Biome version from the network. To work offline, you can specify the path to the Biome executable viabiome().pathToExe(...)
. -
biome
Downloads the given Biome version from the network. -
clangFormat
Uses the default version of clang-format. -
clangFormat
Uses the specified version of clang-format. -
eclipseWtp
public FormatExtension.EclipseWtpConfig eclipseWtp(com.diffplug.spotless.extra.wtp.EclipseWtpFormatterStep type) -
eclipseWtp
public FormatExtension.EclipseWtpConfig eclipseWtp(com.diffplug.spotless.extra.wtp.EclipseWtpFormatterStep type, String version) -
idea
-
withinBlocks
spotless { format 'examples', { target '*.md' withinBlocks 'javascript examples', '\n```javascript\n', '\n```\n', { prettier().config(['parser': 'javascript']) } ...
-
withinBlocks
public <T extends FormatExtension> void withinBlocks(String name, String open, String close, Class<T> clazz, Action<T> configure) Same aswithinBlocks(String, String, String, Action)
, except you can specify any language-specific subclass ofFormatExtension
to get language-specific steps.spotless { format 'examples', { target '*.md' withinBlocks 'java examples', '\n```java\n', '\n```\n', com.diffplug.gradle.spotless.JavaExtension, { googleJavaFormat() formatAnnotations() } ...
-
withinBlocksRegex
Same aswithinBlocks(String, String, String, Action)
, except instead of an open/close pair, you specify a regex with exactly one capturing group. -
withinBlocksRegex
public <T extends FormatExtension> void withinBlocksRegex(String name, String regex, Class<T> clazz, Action<T> configure) Same aswithinBlocksRegex(String, String, Action)
, except you can specify any language-specific subclass ofFormatExtension
to get language-specific steps. -
toggleOffOnRegex
Given a regex with *exactly one capturing group*, disables formatting inside that captured group. -
toggleOffOn
Disables formatting between the given tags. -
toggleOffOn
public void toggleOffOn()Disables formatting betweenspotless:off
andspotless:on
. -
toggleOffOnDisable
public void toggleOffOnDisable()Undoes all previous calls totoggleOffOn()
andtoggleOffOn(String, String)
. -
setupTask
Sets up a format task according to the values in this extension. -
getProject
Returns the project that this extension is attached to. -
createIndependentApplyTask
Eager version ofcreateIndependentApplyTaskLazy(String)
-
createIndependentApplyTaskLazy
Creates an independentSpotlessApply
for (very) unusual circumstances.Most users will not want this method. In the rare case that you want to create a
SpotlessApply
which is independent of the normal Spotless machinery, this will let you do that.The returned task will not be hooked up to the global
spotlessApply
, and there will be no correspondingcheck
task.The task name must not end with `Apply`.
NOTE: does not respect the rarely-used
spotlessFiles
property. -
noDefaultTargetException
-
suppressLintsFor(Action)
instead.