Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rework docker && project files #2060

Merged
merged 1 commit into from
Jun 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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