Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gradle 8.x: can not configure SQL format in withinBlocksRegex #2054

Open
skuzzle opened this issue Feb 27, 2024 · 0 comments
Open

Gradle 8.x: can not configure SQL format in withinBlocksRegex #2054

skuzzle opened this issue Feb 27, 2024 · 0 comments

Comments

@skuzzle
Copy link
Contributor

skuzzle commented Feb 27, 2024

I'm using Gradle 8.6 and spotless 6.25.0 on macOS Sonoma 14.3.1

I was trying to format some SQL within another source file, but I just can not register the sql format. I tried the following:

spotless {
    format("jsonnet") {
        target("**/*.jsonnet", "**/*.libsonnet")
        trimTrailingWhitespace()
        indentWithSpaces()
        withinBlocksRegex("sql", "(?s)|||\\v.*|||") {
            sql { dbeaver() }
        }
    }
}

And it fails with:

Caused by: org.gradle.api.internal.AbstractMutationGuard$IllegalMutationException: DefaultTaskContainer#register(String, Class, Action) on task set cannot be executed in the current context.
	at org.gradle.api.internal.AbstractMutationGuard.createIllegalStateException(AbstractMutationGuard.java:39)
	at org.gradle.api.internal.AbstractMutationGuard.assertMutationAllowed(AbstractMutationGuard.java:27)
	at org.gradle.api.internal.DefaultDomainObjectCollection.assertMutable(DefaultDomainObjectCollection.java:440)
	at org.gradle.api.internal.tasks.DefaultTaskContainer.register(DefaultTaskContainer.java:381)
	at com.diffplug.gradle.spotless.SpotlessExtensionImpl.createFormatTasks(SpotlessExtensionImpl.java:56)
	at com.diffplug.gradle.spotless.SpotlessExtension.maybeCreate(SpotlessExtension.java:273)
	at com.diffplug.gradle.spotless.SpotlessExtension.format(SpotlessExtension.java:257)
	at com.diffplug.gradle.spotless.SpotlessExtension.sql(SpotlessExtension.java:168)
	at Build_logic_jsonnet_sql_spotless_gradle$2$1$1.execute(build-logic.jsonnet-sql-spotless.gradle.kts:14)
	at Build_logic_jsonnet_sql_spotless_gradle$2$1$1.execute(build-logic.jsonnet-sql-spotless.gradle.kts:13)
	at com.diffplug.gradle.spotless.FormatExtension.withinBlocksHelper(FormatExtension.java:1018)
	at com.diffplug.gradle.spotless.FormatExtension.withinBlocksRegex(FormatExtension.java:1010)
	at com.diffplug.gradle.spotless.FormatExtension.withinBlocksRegex(FormatExtension.java:1000)
	at Build_logic_jsonnet_sql_spotless_gradle$2$1.execute(build-logic.jsonnet-sql-spotless.gradle.kts:13)
	at Build_logic_jsonnet_sql_spotless_gradle$2$1.execute(build-logic.jsonnet-sql-spotless.gradle.kts:9)
	at com.diffplug.gradle.spotless.SpotlessExtensionImpl.lambda$createFormatTasks$6(SpotlessExtensionImpl.java:67)
	at org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45)
	at org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45)
	at org.gradle.internal.code.DefaultUserCodeApplicationContext$CurrentApplication$1.execute(DefaultUserCodeApplicationContext.java:122)
	at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction$1.run(DefaultCollectionCallbackActionDecorator.java:110)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
	at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction.execute(DefaultCollectionCallbackActionDecorator.java:107)
	at org.gradle.internal.ImmutableActionSet$SetWithManyActions.execute(ImmutableActionSet.java:329)
	at org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:262)
	at org.gradle.api.internal.DefaultNamedDomainObjectCollection.doAdd(DefaultNamedDomainObjectCollection.java:124)
	at org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:256)
	at org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.tryCreate(DefaultNamedDomainObjectCollection.java:1005)
	... 170 more

Instead of the sql { ... } I tried e.g. googleJavaFormat() and it works without this failure, so I assume that this is a bug
It also doesn't work with googleJavaFormat

After some more experiments I found that this issue is likely related to gradle 8.x
The configuration apparently works with gradle 7.6.4

@skuzzle skuzzle changed the title Gradle: can not configure SQL format in withinBlocksRegex Gradle 8.x: can not configure SQL format in withinBlocksRegex Mar 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant