Skip to content

Commit

Permalink
Merge pull request #2060 from DamnClin/rework-docker-context
Browse files Browse the repository at this point in the history
Rework docker && project files
  • Loading branch information
pascalgrimaud authored Jun 14, 2022
2 parents fd5dcec + 23462db commit 2b024ed
Show file tree
Hide file tree
Showing 60 changed files with 562 additions and 875 deletions.
6 changes: 0 additions & 6 deletions src/main/java/tech/jhipster/lite/common/domain/FileUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -147,12 +147,6 @@ public static Optional<String> readLineInClasspath(String filename, String value
return Optional.empty();
}

public static List<String> readLinesInClasspath(String filename) {
Assert.notBlank(FILENAME, filename);

return new BufferedReader(new InputStreamReader(getInputStream(filename))).lines().toList();
}

private static InputStream getInputStream(String... paths) {
InputStream in = FileUtils.class.getResourceAsStream(FILE_SEPARATOR + getPath(paths));

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package tech.jhipster.lite.common.domain;

public interface ProjectFilesReader {
String read(String path);
}
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
package tech.jhipster.lite.generator.module.domain;
package tech.jhipster.lite.common.infrastructure.secondary;

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import org.apache.commons.io.IOUtils;
import org.springframework.stereotype.Service;
import tech.jhipster.lite.common.domain.Generated;
import tech.jhipster.lite.common.domain.ProjectFilesReader;
import tech.jhipster.lite.error.domain.Assert;
import tech.jhipster.lite.error.domain.GeneratorException;

public final class FilesReader {
@Service
public class FileSystemProjectFilesReader implements ProjectFilesReader {

private static final String SLASH = "/";

private FilesReader() {}

@Override
@Generated
public static String readContent(String path) {
public String read(String path) {
Assert.notBlank("path", path);

try (InputStream input = FilesReader.class.getResourceAsStream(path.replace("\\", SLASH))) {
try (InputStream input = FileSystemProjectFilesReader.class.getResourceAsStream(path.replace("\\", SLASH))) {
if (input == null) {
throw new GeneratorException("Can't find file: " + path);
}
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package tech.jhipster.lite.generator.docker.domain;

import tech.jhipster.lite.error.domain.Assert;

public record DockerImage(String imageName, String version) {
public DockerImage {
Assert.notNull("imageName", imageName);
Assert.notNull("version", version);
}

public String fullName() {
return imageName() + ":" + version();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package tech.jhipster.lite.generator.docker.domain;

import tech.jhipster.lite.error.domain.Assert;

public record DockerImageName(String imageName) {
public DockerImageName(String imageName) {
Assert.notBlank("imageName", imageName);

this.imageName = imageName.toLowerCase();
}

public String get() {
return imageName();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package tech.jhipster.lite.generator.docker.domain;

public interface DockerImages {
/**
* Get docker image information
*
* @param imageName
* name of the image to get information for
* @return The docker image with this name
* @throws UnknownDockerImageException
* if the image can't be found
*/
DockerImage get(DockerImageName imageName);

/**
* Get docker image information
*
* @param imageName
* name of the image to get information for
* @return The docker image with this name
* @throws UnknownDockerImageException
* if the image can't be found
*/
default DockerImage get(String imageName) {
return get(new DockerImageName(imageName));
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package tech.jhipster.lite.generator.docker.domain;

import tech.jhipster.lite.error.domain.GeneratorException;

public class UnknownDockerImageException extends GeneratorException {

public UnknownDockerImageException(DockerImageName imageName) {
super("Can't find image " + imageName.get() + ", forgot to add it to src/main/resources/generator/dependencies/Dockerfile?");
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package tech.jhipster.lite.generator.docker.infrastructure.secondary;

import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Stream;
import org.springframework.stereotype.Repository;
import tech.jhipster.lite.common.domain.ProjectFilesReader;
import tech.jhipster.lite.error.domain.Assert;
import tech.jhipster.lite.generator.docker.domain.DockerImage;
import tech.jhipster.lite.generator.docker.domain.DockerImageName;
import tech.jhipster.lite.generator.docker.domain.DockerImages;
import tech.jhipster.lite.generator.docker.domain.UnknownDockerImageException;

@Repository
class FileSystemDockerImagesRepository implements DockerImages {

private static final String DOCKER_FROM = "from ";

private final ProjectFilesReader files;

public FileSystemDockerImagesRepository(ProjectFilesReader files) {
this.files = files;
}

@Override
public DockerImage get(DockerImageName imageName) {
Assert.notNull("imageName", imageName);

return Stream
.of(files.read("/generator/dependencies/Dockerfile").split("[\r\n]"))
.map(String::trim)
.map(String::toLowerCase)
.filter(imageLine(imageName))
.findFirst()
.map(toDockerImage())
.orElseThrow(() -> new UnknownDockerImageException(imageName));
}

private Predicate<String> imageLine(DockerImageName imageName) {
return line -> line.startsWith(DOCKER_FROM + imageName.get() + ":");
}

private Function<String, DockerImage> toDockerImage() {
return line -> {
int versionSeparatorIndex = line.lastIndexOf(":");

return new DockerImage(
line.substring(DOCKER_FROM.length(), versionSeparatorIndex),
line.substring(versionSeparatorIndex + 1, line.length())
);
};
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package tech.jhipster.lite.generator.module.domain;

import java.nio.file.Path;
import tech.jhipster.lite.common.domain.ProjectFilesReader;
import tech.jhipster.lite.error.domain.Assert;

class JHipsterFileContent {
Expand All @@ -13,10 +14,11 @@ class JHipsterFileContent {
this.source = source;
}

public String read(JHipsterModuleContext context) {
public String read(ProjectFilesReader files, JHipsterModuleContext context) {
Assert.notNull("files", files);
Assert.notNull("context", context);

String rawContent = FilesReader.readContent(source.toString());
String rawContent = files.read(source.toString());
return ArgumentsReplacer.replaceArguments(rawContent, context.get());
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package tech.jhipster.lite.generator.module.domain;

import java.nio.file.Path;
import tech.jhipster.lite.common.domain.ProjectFilesReader;
import tech.jhipster.lite.error.domain.Assert;
import tech.jhipster.lite.generator.module.domain.properties.JHipsterProjectFolder;

Expand Down Expand Up @@ -33,8 +34,8 @@ public Path path(JHipsterProjectFolder projectFolder) {
return file.destination().pathInProject(projectFolder);
}

public String content() {
return file.content().read(context);
public String content(ProjectFilesReader files) {
return file.content().read(files, context);
}

static class TemplatedFileBuilder {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
import java.util.List;
import java.util.regex.Pattern;
import org.springframework.stereotype.Repository;
import tech.jhipster.lite.common.domain.Generated;
import tech.jhipster.lite.generator.module.domain.FilesReader;
import tech.jhipster.lite.common.domain.ProjectFilesReader;
import tech.jhipster.lite.generator.module.domain.javadependency.CurrentJavaDependenciesVersions;
import tech.jhipster.lite.generator.module.domain.javadependency.JavaDependenciesCurrentVersionsRepository;
import tech.jhipster.lite.generator.module.domain.javadependency.JavaDependencyVersion;
Expand All @@ -15,15 +14,17 @@ class FileSystemCurrentJavaDependenciesVersionsRepository implements JavaDepende
private static final String CURRENT_VERSIONS_FILE = "/generator/dependencies/pom.xml";
private static final Pattern VERSIONS_PATTERN = Pattern.compile("<([^>]+)\\.version>([^>]+)<\\/");

private final ProjectFilesReader files;
private final CurrentJavaDependenciesVersions versions;

public FileSystemCurrentJavaDependenciesVersionsRepository() {
public FileSystemCurrentJavaDependenciesVersionsRepository(ProjectFilesReader files) {
this.files = files;

versions = readVersions();
}

@Generated
private CurrentJavaDependenciesVersions readVersions() {
List<JavaDependencyVersion> readVersions = extractVersions(FilesReader.readContent(CURRENT_VERSIONS_FILE));
List<JavaDependencyVersion> readVersions = extractVersions(files.read(CURRENT_VERSIONS_FILE));

return new CurrentJavaDependenciesVersions(readVersions);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;
import tech.jhipster.lite.common.domain.ProjectFilesReader;
import tech.jhipster.lite.error.domain.GeneratorException;
import tech.jhipster.lite.generator.module.domain.TemplatedFile;
import tech.jhipster.lite.generator.module.domain.TemplatedFiles;
Expand All @@ -17,6 +18,12 @@ class FileSystemJHipsterModuleFiles {

private static final Logger log = LoggerFactory.getLogger(FileSystemJHipsterModuleFiles.class);

private final ProjectFilesReader files;

public FileSystemJHipsterModuleFiles(ProjectFilesReader files) {
this.files = files;
}

void create(JHipsterProjectFolder projectFolder, TemplatedFiles files) {
files.get().forEach(writeFile(projectFolder));
}
Expand All @@ -27,7 +34,7 @@ private Consumer<TemplatedFile> writeFile(JHipsterProjectFolder projectFolder) {

try {
Files.createDirectories(file.folder(projectFolder));
Files.writeString(filePath, file.content());
Files.writeString(filePath, file.content(files));

log.debug("{} added", filePath);
} catch (IOException e) {
Expand Down
Loading

0 comments on commit 2b024ed

Please sign in to comment.