Skip to content

Commit

Permalink
Add sql formatter to maven
Browse files Browse the repository at this point in the history
  • Loading branch information
tisoft committed Sep 16, 2020
1 parent d033a87 commit 025e1a9
Show file tree
Hide file tree
Showing 6 changed files with 132 additions and 2 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ lib('npm.PrettierFormatterStep') +'{{yes}} | {{yes}}
lib('npm.TsFmtFormatterStep') +'{{yes}} | {{yes}} | {{no}} | {{no}} |',
lib('python.BlackStep') +'{{yes}} | {{no}} | {{no}} | {{no}} |',
lib('scala.ScalaFmtStep') +'{{yes}} | {{yes}} | {{yes}} | {{no}} |',
lib('sql.DBeaverSQLFormatterStep') +'{{yes}} | {{no}} | {{yes}} | {{no}} |',
lib('sql.DBeaverSQLFormatterStep') +'{{yes}} | {{yes}} | {{yes}} | {{no}} |',
extra('wtp.EclipseWtpFormatterStep') +'{{yes}} | {{yes}} | {{no}} | {{no}} |',
'| [(Your FormatterStep here)](CONTRIBUTING.md#how-to-add-a-new-formatterstep) | {{no}} | {{no}} | {{no}} | {{no}} |',
].join('\n');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
import com.diffplug.spotless.maven.java.Java;
import com.diffplug.spotless.maven.kotlin.Kotlin;
import com.diffplug.spotless.maven.scala.Scala;
import com.diffplug.spotless.maven.sql.Sql;
import com.diffplug.spotless.maven.typescript.Typescript;

public abstract class AbstractSpotlessMojo extends AbstractMojo {
Expand Down Expand Up @@ -112,6 +113,9 @@ public abstract class AbstractSpotlessMojo extends AbstractMojo {
@Parameter
private Antlr4 antlr4;

@Parameter
private Sql sql;

@Parameter(property = "spotlessFiles")
private String filePatterns;

Expand Down Expand Up @@ -201,7 +205,7 @@ private FileLocator getFileLocator() {
}

private List<FormatterFactory> getFormatterFactories() {
return Stream.concat(formats.stream(), Stream.of(java, scala, kotlin, cpp, typescript, antlr4))
return Stream.concat(formats.stream(), Stream.of(java, scala, kotlin, cpp, typescript, antlr4, sql))
.filter(Objects::nonNull)
.collect(toList());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/*
* 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 <dbeaver>...</dbeaver>} configuration element.
* <p>
* It defines a formatter for sql source files.
*/
public class Sql extends FormatterFactory {
private static final String LICENSE_HEADER_DELIMITER = null;

@Override
public Set<String> defaultIncludes() {
return Collections.emptySet();
}

@Override
public String licenseHeaderDelimiter() {
return LICENSE_HEADER_DELIMITER;
}

public void addDbeaver(DBeaver dbeaver) {
addStepFactory(dbeaver);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,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)));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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("<dbeaver/>");

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("<dbeaver><configFile>myConfig.properties</configFile></dbeaver>");
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");
}
}

0 comments on commit 025e1a9

Please sign in to comment.