getFormatterFactories() {
- return Stream.concat(formats.stream(), Stream.of(groovy, java, scala, kotlin, cpp, typescript, antlr4))
+ return Stream.concat(formats.stream(), Stream.of(groovy, java, scala, kotlin, cpp, typescript, antlr4, sql))
.filter(Objects::nonNull)
.collect(toList());
}
diff --git a/plugin-maven/src/main/java/com/diffplug/spotless/maven/sql/DBeaver.java b/plugin-maven/src/main/java/com/diffplug/spotless/maven/sql/DBeaver.java
new file mode 100644
index 0000000000..d3426dea78
--- /dev/null
+++ b/plugin-maven/src/main/java/com/diffplug/spotless/maven/sql/DBeaver.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2020 DiffPlug
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.diffplug.spotless.maven.sql;
+
+import java.util.Collections;
+import java.util.Optional;
+
+import org.apache.maven.plugins.annotations.Parameter;
+
+import com.diffplug.spotless.FormatterStep;
+import com.diffplug.spotless.maven.FormatterStepConfig;
+import com.diffplug.spotless.maven.FormatterStepFactory;
+import com.diffplug.spotless.sql.DBeaverSQLFormatterStep;
+
+public class DBeaver implements FormatterStepFactory {
+
+ @Parameter
+ private String configFile;
+
+ @Override
+ public FormatterStep newFormatterStep(FormatterStepConfig stepConfig) {
+ return DBeaverSQLFormatterStep.create(Optional.ofNullable(configFile).map(c -> stepConfig.getFileLocator().locateFile(c)).map(Collections::singleton).orElseGet(Collections::emptySet));
+ }
+}
diff --git a/plugin-maven/src/main/java/com/diffplug/spotless/maven/sql/Sql.java b/plugin-maven/src/main/java/com/diffplug/spotless/maven/sql/Sql.java
new file mode 100644
index 0000000000..c49ac074d9
--- /dev/null
+++ b/plugin-maven/src/main/java/com/diffplug/spotless/maven/sql/Sql.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2020 DiffPlug
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.diffplug.spotless.maven.sql;
+
+import java.util.Collections;
+import java.util.Set;
+
+import com.diffplug.spotless.maven.FormatterFactory;
+
+/**
+ * A {@link FormatterFactory} implementation that corresponds to {@code ...} configuration element.
+ *
+ * It defines a formatter for sql source files.
+ */
+public class Sql extends FormatterFactory {
+ @Override
+ public Set defaultIncludes() {
+ return Collections.emptySet();
+ }
+
+ @Override
+ public String licenseHeaderDelimiter() {
+ return null;
+ }
+
+ public void addDbeaver(DBeaver dbeaver) {
+ addStepFactory(dbeaver);
+ }
+}
diff --git a/plugin-maven/src/main/java/com/diffplug/spotless/maven/typescript/Typescript.java b/plugin-maven/src/main/java/com/diffplug/spotless/maven/typescript/Typescript.java
index 387f1e0a70..da6e6ddd91 100644
--- a/plugin-maven/src/main/java/com/diffplug/spotless/maven/typescript/Typescript.java
+++ b/plugin-maven/src/main/java/com/diffplug/spotless/maven/typescript/Typescript.java
@@ -26,8 +26,6 @@
* It defines a formatter for typescript source files.
*/
public class Typescript extends FormatterFactory {
- private static final String LICENSE_HEADER_DELIMITER = null;
-
@Override
public Set defaultIncludes() {
return Collections.emptySet();
@@ -35,7 +33,7 @@ public Set defaultIncludes() {
@Override
public String licenseHeaderDelimiter() {
- return LICENSE_HEADER_DELIMITER;
+ return null;
}
public void addTsfmt(Tsfmt tsfmt) {
diff --git a/plugin-maven/src/test/java/com/diffplug/spotless/maven/MavenIntegrationHarness.java b/plugin-maven/src/test/java/com/diffplug/spotless/maven/MavenIntegrationHarness.java
index b363cdb454..97a957c75a 100644
--- a/plugin-maven/src/test/java/com/diffplug/spotless/maven/MavenIntegrationHarness.java
+++ b/plugin-maven/src/test/java/com/diffplug/spotless/maven/MavenIntegrationHarness.java
@@ -126,6 +126,10 @@ protected void writePomWithTypescriptSteps(String... steps) throws IOException {
writePom(groupWithSteps("typescript", including("**/*.ts"), steps));
}
+ protected void writePomWithSqlSteps(String... steps) throws IOException {
+ writePom(groupWithSteps("sql", including("**/*.sql"), steps));
+ }
+
protected void writePomWithPrettierSteps(String includes, String... steps) throws IOException {
writePom(formats(groupWithSteps("format", including(includes), steps)));
}
diff --git a/plugin-maven/src/test/java/com/diffplug/spotless/maven/sql/SqlTest.java b/plugin-maven/src/test/java/com/diffplug/spotless/maven/sql/SqlTest.java
new file mode 100644
index 0000000000..a6fd8719c3
--- /dev/null
+++ b/plugin-maven/src/test/java/com/diffplug/spotless/maven/sql/SqlTest.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2016-2020 DiffPlug
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.diffplug.spotless.maven.sql;
+
+import org.junit.Test;
+
+import com.diffplug.spotless.maven.MavenIntegrationHarness;
+
+public class SqlTest extends MavenIntegrationHarness {
+ @Test
+ public void testDbeaverWithDefaultConfig() throws Exception {
+ writePomWithSqlSteps("");
+
+ setFile("src/main/resources/aFolder/create.sql").toResource("sql/dbeaver/create.dirty");
+ mavenRunner().withArguments("spotless:apply").runNoError();
+ assertFile("src/main/resources/aFolder/create.sql").sameAsResource("sql/dbeaver/create.clean");
+ }
+
+ @Test
+ public void testDbeaverWithAlternativeConfig() throws Exception {
+ writePomWithSqlSteps("myConfig.properties");
+ setFile("myConfig.properties").toResource("sql/dbeaver/sqlConfig2.properties");
+
+ setFile("src/main/resources/aFolder/create.sql").toResource("sql/dbeaver/create.dirty");
+ mavenRunner().withArguments("spotless:apply").runNoError();
+ assertFile("src/main/resources/aFolder/create.sql").sameAsResource("sql/dbeaver/create.clean.alternative");
+ }
+}