Skip to content

Commit

Permalink
Split init & init-minimal to have a prettier module
Browse files Browse the repository at this point in the history
Fix #3224
  • Loading branch information
hdurix committed Aug 26, 2022
1 parent e731a8d commit 845dfa4
Show file tree
Hide file tree
Showing 56 changed files with 279 additions and 229 deletions.
3 changes: 0 additions & 3 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@ insert_final_newline = true
indent_style = space
indent_size = 2

[*.{java}]
indent_size = 2

[*.md]
trim_trailing_whitespace = false

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ JHipsterModuleResource mavenModule(MavenApplicationService maven) {
.slug("maven-java")
.propertiesDefinition(JHipsterModulePropertiesDefinition.builder().addBasePackage().addProjectBaseName().addProjectName().build())
.apiDoc(new JHipsterModuleApiDoc("Build Tool", "Init Maven project with pom.xml and wrapper"))
.organization(JHipsterModuleOrganization.builder().feature("java-build-tool").addFeatureDependency("startup").build())
.organization(JHipsterModuleOrganization.builder().feature("java-build-tool").addModuleDependency("init").build())
.tags("buildtool", "test")
.factory(maven::buildModule);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ JHipsterModuleResource angularModule(AngularApplicationService angular) {
.slug("angular-core")
.propertiesDefinition(JHipsterModulePropertiesDefinition.builder().addBasePackage().addProjectBaseName().addProjectName().build())
.apiDoc(new JHipsterModuleApiDoc("Angular", "Add Angular + Angular CLI"))
.organization(JHipsterModuleOrganization.builder().feature("client-core").addFeatureDependency("startup").build())
.organization(JHipsterModuleOrganization.builder().feature("client-core").addModuleDependency("init").build())
.tags("client", "angular")
.factory(angular::buildInitModule);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ JHipsterModuleResource styledReactCoreModule(ReactCoreApplicationService react)
.slug("react-core")
.propertiesDefinition(properties())
.apiDoc(new JHipsterModuleApiDoc("React", "Add React+Vite with minimal CSS"))
.organization(JHipsterModuleOrganization.builder().feature("client-core").addFeatureDependency("startup").build())
.organization(JHipsterModuleOrganization.builder().feature("client-core").addModuleDependency("init").build())
.tags("client", REACT)
.factory(react::buildModuleWithStyle);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import static tech.jhipster.lite.common.domain.FileUtils.*;
import static tech.jhipster.lite.generator.project.domain.Constants.*;

import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Map;
import tech.jhipster.lite.error.domain.GeneratorException;
import tech.jhipster.lite.generator.packagemanager.npm.domain.NpmService;
Expand Down Expand Up @@ -39,7 +41,9 @@ public void addStyledSvelteKit(Project project) {
}

public void renameJhipsterFiles(Project project) {
projectRepository.rename(project, ".", ".lintstagedrc.js", ".lintstagedrc.cjs");
if (Files.exists(Paths.get(project.getFolder(), ".lintstagedrc.js"))) {
projectRepository.rename(project, ".", ".lintstagedrc.js", ".lintstagedrc.cjs");
}
}

public void addCommonSvelteKit(Project project) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ JHipsterModuleResource cypresModule(CypressApplicationService cypress) {
.slug("cypress")
.propertiesDefinition(JHipsterModulePropertiesDefinition.builder().addServerPort().addIndentation().build())
.apiDoc(new JHipsterModuleApiDoc("E2e", "Add Cypress"))
.organization(JHipsterModuleOrganization.builder().feature("front-browser-test").addFeatureDependency("startup").build())
.organization(JHipsterModuleOrganization.builder().feature("front-browser-test").addModuleDependency("init").build())
.tags("client", "cypress", "e2e")
.factory(cypress::buildModule);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ JHipsterModuleResource playwrightModule(PlaywrightApplicationService playwright)
.slug("client-common-playwright")
.propertiesDefinition(JHipsterModulePropertiesDefinition.builder().addServerPort().build())
.apiDoc(new JHipsterModuleApiDoc("E2e", "/api/clients/playwright"))
.organization(JHipsterModuleOrganization.builder().feature("front-browser-test").addFeatureDependency("startup").build())
.organization(JHipsterModuleOrganization.builder().feature("front-browser-test").addModuleDependency("init").build())
.tags("client", "test", "playwright")
.factory(playwright::buildModule);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ JHipsterModuleResource vueModule(VueApplicationService vue) {
.slug("vue")
.propertiesDefinition(JHipsterModulePropertiesDefinition.builder().addIndentation().build())
.apiDoc(new JHipsterModuleApiDoc("Vue", "Add Vue+Vite"))
.organization(JHipsterModuleOrganization.builder().feature("client-core").addFeatureDependency("startup").build())
.organization(JHipsterModuleOrganization.builder().feature("client-core").addModuleDependency("init").build())
.tags("client", "init", "vue")
.factory(vue::buildVueModule);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,7 @@ public InitApplicationService(NpmVersions npmVersions) {
factory = new InitModuleFactory(npmVersions);
}

public JHipsterModule buildFullInitModule(JHipsterModuleProperties properties) {
return factory.buildFullModule(properties);
}

public JHipsterModule buildMinimalInitModule(JHipsterModuleProperties properties) {
return factory.buildMinimalModule(properties);
public JHipsterModule buildModule(JHipsterModuleProperties properties) {
return factory.buildModule(properties);
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package tech.jhipster.lite.generator.init.domain;

import static tech.jhipster.lite.module.domain.JHipsterModule.*;
import static tech.jhipster.lite.module.domain.packagejson.VersionSource.*;

import tech.jhipster.lite.error.domain.Assert;
import tech.jhipster.lite.module.domain.JHipsterModule;
import tech.jhipster.lite.module.domain.JHipsterModule.JHipsterModuleBuilder;
import tech.jhipster.lite.module.domain.file.JHipsterDestination;
import tech.jhipster.lite.module.domain.file.JHipsterSource;
import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties;
Expand All @@ -25,56 +23,25 @@ public InitModuleFactory(NpmVersions npmVersions) {
this.npmVersions = npmVersions;
}

public JHipsterModule buildFullModule(JHipsterModuleProperties properties) {
public JHipsterModule buildModule(JHipsterModuleProperties properties) {
//@formatter:off
return minimalModuleBuilder(properties)
return moduleBuilder(properties)
.context()
.put("prettierEndOfLine", endOfLine(properties))
.put("dasherizedBaseName", properties.projectBaseName().kebabCase())
.put("nodeVersion", npmVersions.get("node", NpmVersionSource.COMMON).get())
.and()
.files()
.batch(SOURCE, DESTINATION)
.addFile(".lintstagedrc.js")
.addFile(".prettierignore")
.addTemplate(".prettierrc")
.addTemplate("package.json")
.and()
.addExecutable(SOURCE.append(".husky").file("pre-commit"), DESTINATION.append(".husky/pre-commit"))
.and()
.packageJson()
.addDevDependency(packageName("@prettier/plugin-xml"), COMMON)
.addDevDependency(packageName("husky"), COMMON)
.addDevDependency(packageName("lint-staged"), COMMON)
.addDevDependency(packageName("prettier"), COMMON)
.addDevDependency(packageName("prettier-plugin-java"), COMMON)
.addDevDependency(packageName("prettier-plugin-packagejson"), COMMON)
.and()
.build();
//@formatter:on
}

public JHipsterModule buildMinimalModule(JHipsterModuleProperties properties) {
return minimalModuleBuilder(properties).build();
}

private JHipsterModuleBuilder minimalModuleBuilder(JHipsterModuleProperties properties) {
Assert.notNull("properties", properties);

//@formatter:off
return moduleBuilder(properties)
.context()
.put("editorConfigEndOfLine", endOfLine(properties))
.put("endOfLine", endOfLine(properties))
.and()
.files()
.batch(SOURCE, DESTINATION)
.addTemplate("README.md")
.addTemplate("package.json")
.addTemplate(".editorconfig")
.addFile(".eslintignore")
.and()
.add(SOURCE.file("gitignore"), to(".gitignore"))
.add(SOURCE.file("gitattributes"), to(".gitattributes"))
.and();
.and()
.build();
//@formatter:on
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@
import org.springframework.context.annotation.Configuration;
import tech.jhipster.lite.generator.init.application.InitApplicationService;
import tech.jhipster.lite.module.domain.resource.JHipsterModuleApiDoc;
import tech.jhipster.lite.module.domain.resource.JHipsterModuleOrganization;
import tech.jhipster.lite.module.domain.resource.JHipsterModulePropertiesDefinition;
import tech.jhipster.lite.module.domain.resource.JHipsterModulePropertyDefinition;
import tech.jhipster.lite.module.domain.resource.JHipsterModuleResource;

@Configuration
Expand All @@ -16,45 +14,16 @@ class InitModuleConfiguration {
JHipsterModuleResource initModule(InitApplicationService inits) {
return JHipsterModuleResource
.builder()
.legacyUrl("/api/inits/full")
.legacyUrl("/api/inits")
.slug("init")
.propertiesDefinition(initPropertiesDefinition())
.apiDoc(new JHipsterModuleApiDoc("Init", "Init project"))
.organization(organization())
.standalone()
.tags("server", "init")
.factory(inits::buildFullInitModule);
}

@Bean
JHipsterModuleResource initMinimalModule(InitApplicationService inits) {
return JHipsterModuleResource
.builder()
.legacyUrl("/api/inits/minimal")
.slug("init-minimal")
.propertiesDefinition(initPropertiesDefinition())
.apiDoc(new JHipsterModuleApiDoc("Init", "Init minimal project"))
.organization(organization())
.tags("server", "init")
.factory(inits::buildMinimalInitModule);
.factory(inits::buildModule);
}

private JHipsterModulePropertiesDefinition initPropertiesDefinition() {
return JHipsterModulePropertiesDefinition
.builder()
.addProjectBaseName()
.addProjectName()
.add(
JHipsterModulePropertyDefinition
.optionalStringProperty("endOfLine")
.description("Type of line break (lf or crlf)")
.example("lf")
.order(200)
.build()
)
.build();
}

private JHipsterModuleOrganization organization() {
return JHipsterModuleOrganization.builder().feature("startup").build();
return JHipsterModulePropertiesDefinition.builder().addProjectBaseName().addProjectName().addEndOfLine().addIndentation().build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ public void addScript(Project project, String name, String cmd) {
}

private void addInformationToPackageJson(Project project, String section, String key, String value) {
project.addDefaultConfig(PRETTIER_DEFAULT_INDENT);
int indent = (Integer) project.getConfig(PRETTIER_DEFAULT_INDENT).orElse(2);
project.addDefaultConfig(INDENT_SIZE);
int indent = (Integer) project.getConfig(INDENT_SIZE).orElse(2);

String needle = section + ": " + OB;
String newText = needle + LF + indent(2, indent) + DQ + key + DQ + ": " + DQ + value + DQ;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package tech.jhipster.lite.generator.prettier.application;

import org.springframework.stereotype.Service;
import tech.jhipster.lite.generator.prettier.domain.PrettierModuleFactory;
import tech.jhipster.lite.module.domain.JHipsterModule;
import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties;

@Service
public class PrettierApplicationService {

private final PrettierModuleFactory factory;

public PrettierApplicationService() {
factory = new PrettierModuleFactory();
}

public JHipsterModule buildModule(JHipsterModuleProperties properties) {
return factory.buildModule(properties);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package tech.jhipster.lite.generator.prettier.domain;

import static tech.jhipster.lite.module.domain.JHipsterModule.*;
import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON;

import tech.jhipster.lite.module.domain.JHipsterModule;
import tech.jhipster.lite.module.domain.file.JHipsterDestination;
import tech.jhipster.lite.module.domain.file.JHipsterSource;
import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties;

public class PrettierModuleFactory {

private static final JHipsterSource SOURCE = from("prettier");
private static final JHipsterDestination DESTINATION = to(".");

public JHipsterModule buildModule(JHipsterModuleProperties properties) {
//@formatter:off
return moduleBuilder(properties)
.context()
.put("dasherizedBaseName", properties.projectBaseName().kebabCase())
.put("endOfLine", endOfLine(properties))
.and()
.files()
.batch(SOURCE, DESTINATION)
.addFile(".lintstagedrc.js")
.addFile(".prettierignore")
.addTemplate(".prettierrc")
.and()
.addExecutable(SOURCE.append(".husky").file("pre-commit"), DESTINATION.append(".husky/pre-commit"))
.and()
.packageJson()
.addDevDependency(packageName("@prettier/plugin-xml"), COMMON)
.addDevDependency(packageName("husky"), COMMON)
.addDevDependency(packageName("lint-staged"), COMMON)
.addDevDependency(packageName("prettier"), COMMON)
.addDevDependency(packageName("prettier-plugin-java"), COMMON)
.addDevDependency(packageName("prettier-plugin-packagejson"), COMMON)
.addScript(scriptKey("prepare"), scriptCommand("husky install"))
.addScript(scriptKey("prettier:check"), scriptCommand("prettier --check \\\\\"{,src/**/}*.{md,json,yml,html,js,ts,tsx,css,scss,vue,java,xml}\\\\\""))
.addScript(scriptKey("prettier:format"), scriptCommand("prettier --write \\\\\"{,src/**/}*.{md,json,yml,html,js,ts,tsx,css,scss,vue,java,xml}\\\\\""))
.and()
.build();
//@formatter:on
}

private String endOfLine(JHipsterModuleProperties properties) {
return properties.getOrDefaultString("endOfLine", "lf");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package tech.jhipster.lite.generator.prettier.infrastructure.primary;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import tech.jhipster.lite.generator.prettier.application.PrettierApplicationService;
import tech.jhipster.lite.module.domain.resource.JHipsterModuleApiDoc;
import tech.jhipster.lite.module.domain.resource.JHipsterModuleOrganization;
import tech.jhipster.lite.module.domain.resource.JHipsterModulePropertiesDefinition;
import tech.jhipster.lite.module.domain.resource.JHipsterModuleResource;

@Configuration
class PrettierModuleConfiguration {

@Bean
JHipsterModuleResource prettierModule(PrettierApplicationService prettier) {
return JHipsterModuleResource
.builder()
.legacyUrl("/api/prettier")
.slug("prettier")
.propertiesDefinition(initPropertiesDefinition())
.apiDoc(new JHipsterModuleApiDoc("Prettier", "Format project with prettier"))
.organization(JHipsterModuleOrganization.builder().addModuleDependency("init").build())
.tags("server", "client", "init")
.factory(prettier::buildModule);
}

private JHipsterModulePropertiesDefinition initPropertiesDefinition() {
return JHipsterModulePropertiesDefinition.builder().addProjectBaseName().addProjectName().addEndOfLine().addIndentation().build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,11 @@
public class DefaultConfig {

public static final String BASE_NAME = "baseName";
public static final String REMOTE_URL = "remoteUrl";
public static final String PROJECT_NAME = "projectName";
public static final String PACKAGE_NAME = "packageName";
public static final String PRETTIER_DEFAULT_INDENT = "prettierDefaultIndent";
public static final String INDENT_SIZE = "indentSize";

public static final String DEFAULT_PACKAGE_NAME = "com.mycompany.myapp";
public static final String PACKAGE_PATH = "com/mycompany/myapp";
public static final String DEFAULT_BASE_NAME = "jhipster";
public static final String DEFAULT_PROJECT_NAME = "JHipster Project";

Expand All @@ -23,7 +21,7 @@ public class DefaultConfig {
BASE_NAME, DEFAULT_BASE_NAME,
PROJECT_NAME, DEFAULT_PROJECT_NAME,
PACKAGE_NAME, DEFAULT_PACKAGE_NAME,
PRETTIER_DEFAULT_INDENT, DEFAULT_INDENTATION
INDENT_SIZE, DEFAULT_INDENTATION
);

//@formatter:on
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ JHipsterModuleResource typescriptModule(TypescriptApplicationService typescriptA
.slug("typescript")
.withoutProperties()
.apiDoc(new JHipsterModuleApiDoc("Typescript", "Init Typescript project"))
.organization(JHipsterModuleOrganization.builder().addFeatureDependency("startup").build())
.organization(JHipsterModuleOrganization.builder().addModuleDependency("init").build())
.tags("typescript")
.factory(typescriptApplicationService::buildModule);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
public class JHipsterModuleProperties {

public static final String BASE_PACKAGE_PARAMETER = "packageName";
public static final String INDENTATION_PARAMETER = "prettierDefaultIndent";
public static final String INDENTATION_PARAMETER = "indentSize";
public static final String PROJECT_NAME_PARAMETER = "projectName";
public static final String PROJECT_BASE_NAME_PARAMETER = "baseName";
public static final String SERVER_PORT_PARAMETER = "serverPort";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ public JHipsterModulePropertiesDefinitionBuilder addIndentation() {
return add(indentationProperty());
}

public JHipsterModulePropertiesDefinitionBuilder addEndOfLine() {
return add(endOfLineProperty());
}

public JHipsterModulePropertiesDefinitionBuilder add(JHipsterModulePropertyDefinition propertyDefinition) {
Assert.notNull("propertyDefinition", propertyDefinition);

Expand Down
Loading

0 comments on commit 845dfa4

Please sign in to comment.