Skip to content

Commit

Permalink
support context variables at packageJson API
Browse files Browse the repository at this point in the history
  • Loading branch information
renanfranca committed May 7, 2024
1 parent 53c4b6a commit bdff983
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import tech.jhipster.lite.module.domain.javabuild.command.JavaBuildCommands;
import tech.jhipster.lite.module.domain.javadependency.JavaDependenciesVersionsRepository;
import tech.jhipster.lite.module.domain.javadependency.ProjectJavaDependenciesRepository;
import tech.jhipster.lite.module.domain.packagejson.JHipsterModulePackageJson;
import tech.jhipster.lite.module.domain.properties.JHipsterProjectFolder;
import tech.jhipster.lite.module.domain.replacement.ContentReplacer;
import tech.jhipster.lite.module.domain.replacement.ContentReplacers;
Expand Down Expand Up @@ -86,7 +87,7 @@ public JHipsterModuleApplied apply(JHipsterModuleToApply moduleToApply) {
.merge(buildGradlePluginsChanges(module))
.merge(buildGradleConfigurationsChanges(module))
)
.packageJson(module.packageJson())
.packageJson(buildPackageJson(module, detectedJavaBuildTool))
.preActions(module.preActions())
.postActions(module.postActions())
.springFactories(module.springFactories());
Expand All @@ -109,6 +110,14 @@ public JHipsterModuleApplied apply(JHipsterModuleToApply moduleToApply) {
return moduleApplied;
}

private JHipsterModulePackageJson buildPackageJson(JHipsterModule module, Optional<JavaBuildTool> detectedJavaBuildTool) {
JHipsterModuleContext context = detectedJavaBuildTool
.map(javaBuildTool -> module.context().withJavaBuildTool(javaBuildTool))
.orElse(module.context());

return module.packageJson().withContext(context);
}

private static JHipsterTemplatedFiles buildTemplatedFiles(JHipsterModule module, Optional<JavaBuildTool> detectedJavaBuildTool) {
JHipsterModuleContext context = detectedJavaBuildTool
.map(javaBuildTool -> module.context().withJavaBuildTool(javaBuildTool))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import java.util.ArrayList;
import java.util.Collection;
import java.util.Optional;
import tech.jhipster.lite.module.domain.JHipsterModule.JHipsterModuleBuilder;
import tech.jhipster.lite.module.domain.JHipsterModuleContext;
import tech.jhipster.lite.shared.error.domain.Assert;

public final class JHipsterModulePackageJson {
Expand All @@ -13,6 +15,7 @@ public final class JHipsterModulePackageJson {
private final PackageJsonDependencies devDependencies;
private final PackageJsonDependencies devDependenciesToRemove;
private final PackageJsonType type;
private Optional<JHipsterModuleContext> context;

private JHipsterModulePackageJson(JHipsterModulePackageJsonBuilder builder) {
scripts = new Scripts(builder.scripts);
Expand All @@ -21,6 +24,7 @@ private JHipsterModulePackageJson(JHipsterModulePackageJsonBuilder builder) {
devDependencies = new PackageJsonDependencies(builder.devDependencies);
devDependenciesToRemove = new PackageJsonDependencies(builder.devDependenciesToRemove);
type = new PackageJsonType(builder.type);
context = Optional.empty();
}

public static JHipsterModulePackageJsonBuilder builder(JHipsterModuleBuilder module) {
Expand Down Expand Up @@ -61,6 +65,16 @@ public PackageJsonType type() {
return type;
}

public Optional<JHipsterModuleContext> context() {
return context;
}

public JHipsterModulePackageJson withContext(JHipsterModuleContext context) {
this.context = Optional.ofNullable(context);

return this;
}

public static final class JHipsterModulePackageJsonBuilder {

private final JHipsterModuleBuilder module;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,23 @@
package tech.jhipster.lite.module.infrastructure.secondary;

import static tech.jhipster.lite.module.domain.JHipsterModule.LINE_BREAK;
import static tech.jhipster.lite.module.domain.JHipsterModule.*;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import tech.jhipster.lite.module.domain.Indentation;
import tech.jhipster.lite.module.domain.JHipsterModuleContext;
import tech.jhipster.lite.module.domain.npm.NpmVersionSource;
import tech.jhipster.lite.module.domain.npm.NpmVersions;
import tech.jhipster.lite.module.domain.packagejson.JHipsterModulePackageJson;
import tech.jhipster.lite.module.domain.packagejson.PackageJsonDependencies;
import tech.jhipster.lite.module.domain.packagejson.PackageJsonDependency;
import tech.jhipster.lite.module.domain.packagejson.PackageJsonType;
import tech.jhipster.lite.module.domain.packagejson.PackageName;
import tech.jhipster.lite.module.domain.packagejson.Scripts;
import tech.jhipster.lite.module.domain.packagejson.*;
import tech.jhipster.lite.module.domain.properties.JHipsterProjectFolder;
import tech.jhipster.lite.shared.enumeration.domain.Enums;
import tech.jhipster.lite.shared.error.domain.Assert;
Expand Down Expand Up @@ -60,7 +57,9 @@ public void handle(Indentation indentation, JHipsterProjectFolder projectFolder,
content = removeDependencies(indentation, packageJson.dependenciesToRemove(), content);
content = removeDevDependencies(indentation, packageJson.devDependenciesToRemove(), content);

content = replacePlaceholders(packageJson.context(), content);
content = cleanupLineBreaks(indentation, content);

write(file, content);
}

Expand All @@ -74,6 +73,28 @@ private Path getPackageJsonFile(JHipsterProjectFolder projectFolder) {
return file;
}

private String replacePlaceholders(Optional<JHipsterModuleContext> optionalContext, String content) {
final StringBuilder result = new StringBuilder(content);
optionalContext.ifPresent(context ->
context
.get()
.forEach((key, value) -> {
String placeholderPattern = "\\{\\{" + key + "}}";
Pattern pattern = Pattern.compile(placeholderPattern);
Matcher matcher = pattern.matcher(result);

StringBuilder sb = new StringBuilder();
while (matcher.find()) {
matcher.appendReplacement(sb, Matcher.quoteReplacement(value.toString()));
}
matcher.appendTail(sb);

result.setLength(0);
result.append(sb);
}));
return result.toString();
}

private String cleanupLineBreaks(Indentation indentation, String content) {
return content.replaceAll(",(\\s*|[\r\n]*)}", LINE_BREAK + indentation.spaces() + "}");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,8 @@
import tech.jhipster.lite.module.domain.javabuild.command.RemoveDirectJavaDependency;
import tech.jhipster.lite.module.domain.javabuild.command.SetVersion;
import tech.jhipster.lite.module.domain.javabuildprofile.BuildProfileId;
import tech.jhipster.lite.module.domain.javadependency.DependencyId;
import tech.jhipster.lite.module.domain.javadependency.JavaDependenciesVersions;
import tech.jhipster.lite.module.domain.javadependency.JavaDependency;
import tech.jhipster.lite.module.domain.javadependency.*;
import tech.jhipster.lite.module.domain.javadependency.JavaDependency.JavaDependencyOptionalValueBuilder;
import tech.jhipster.lite.module.domain.javadependency.JavaDependencyScope;
import tech.jhipster.lite.module.domain.javadependency.JavaDependencyType;
import tech.jhipster.lite.module.domain.javadependency.JavaDependencyVersion;
import tech.jhipster.lite.module.domain.javaproperties.SpringProperty;
import tech.jhipster.lite.module.domain.javaproperties.SpringPropertyType;
import tech.jhipster.lite.module.domain.mavenplugin.MavenPlugin;
Expand Down Expand Up @@ -145,6 +140,7 @@ public static JHipsterModule fullModule() {
.and()
.and()
.packageJson()
.addScript(scriptKey("build"), scriptCommand("ng build --output-path={{projectBuildDirectory}}/classes/static"))
.addScript(scriptKey("serve"), scriptCommand("tikui-core serve"))
.addDependency(packageName("@angular/animations"), VersionSource.ANGULAR, packageName("@angular/core"))
.addDevDependency(packageName("@playwright/test"), VersionSource.COMMON)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,14 @@ void shouldApplyModuleToMavenProject() {
)
.and()
.hasFile("package.json")
.containing("\"scripts\": {\n \"serve\": \"tikui-core serve\"")
.containing(
"""
"scripts": {
"build": "ng build --output-path=target/classes/static",
"serve": "tikui-core serve"
},
"""
)
.containing("\"dependencies\": {\n \"@angular/animations\": \"")
.containing("\"devDependencies\": {\n \"@playwright/test\": \"")
.and()
Expand Down Expand Up @@ -521,7 +528,14 @@ val springProfilesActive by extra("local")
)
.and()
.hasFile("package.json")
.containing("\"scripts\": {\n \"serve\": \"tikui-core serve\"")
.containing(
"""
"scripts": {
"build": "ng build --output-path=build/classes/static",
"serve": "tikui-core serve"
},
"""
)
.containing("\"dependencies\": {\n \"@angular/animations\": \"")
.containing("\"devDependencies\": {\n \"@playwright/test\": \"")
.and()
Expand Down

0 comments on commit bdff983

Please sign in to comment.