Rename jvs to jdvs in codebase and configurations, clean up unused imports, and refactor RepoConfigLoader for improved loading logic and initialization
Build and Push Docker Image / build-and-push (push) Successful in 58s
Build and Push Docker Image / build-and-push (push) Successful in 58s
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<groupId>codes.thischwa</groupId>
|
<groupId>codes.thischwa</groupId>
|
||||||
<artifactId>jvc</artifactId>
|
<artifactId>jdvc</artifactId>
|
||||||
<version>0.1.0-SNAPSHOT</version>
|
<version>0.1.0-SNAPSHOT</version>
|
||||||
|
|
||||||
<name>JavadocViewerService</name>
|
<name>JavadocViewerService</name>
|
||||||
|
|||||||
+2
-2
@@ -8,9 +8,9 @@ import org.springframework.context.annotation.Configuration;
|
|||||||
@Configuration
|
@Configuration
|
||||||
@ConfigurationProperties(prefix = "jdvs")
|
@ConfigurationProperties(prefix = "jdvs")
|
||||||
@Data
|
@Data
|
||||||
public class JvsConfig {
|
public class JdvsConfig {
|
||||||
private String configPath;
|
|
||||||
private String baseDir;
|
private String baseDir;
|
||||||
|
private boolean cleanOnStart;
|
||||||
private boolean runOnStart;
|
private boolean runOnStart;
|
||||||
private List<RepoConfig> repositories;
|
private List<RepoConfig> repositories;
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package codes.thischwa.jdvs.service;
|
package codes.thischwa.jdvs.service;
|
||||||
|
|
||||||
import codes.thischwa.jdvs.config.JvsConfig;
|
import codes.thischwa.jdvs.config.JdvsConfig;
|
||||||
import codes.thischwa.jdvs.model.GitRepository;
|
import codes.thischwa.jdvs.model.GitRepository;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -20,10 +20,10 @@ import org.springframework.stereotype.Service;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class GitService {
|
public class GitService {
|
||||||
private final JvsConfig jvsConfig;
|
private final JdvsConfig jdvsConfig;
|
||||||
|
|
||||||
public Optional<String> updateAndCheckoutLatestTag(GitRepository repoEntity) {
|
public Optional<String> updateAndCheckoutLatestTag(GitRepository repoEntity) {
|
||||||
Path repoPath = Path.of(jvsConfig.getBaseDir(), "repos", repoEntity.getName());
|
Path repoPath = Path.of(jdvsConfig.getBaseDir(), "repos", repoEntity.getName());
|
||||||
try {
|
try {
|
||||||
Git git;
|
Git git;
|
||||||
if (Files.exists(repoPath)) {
|
if (Files.exists(repoPath)) {
|
||||||
@@ -58,6 +58,6 @@ public class GitService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public File getRepoDirectory(String name) {
|
public File getRepoDirectory(String name) {
|
||||||
return Path.of(jvsConfig.getBaseDir(), "repos", name).toFile();
|
return Path.of(jdvsConfig.getBaseDir(), "repos", name).toFile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package codes.thischwa.jdvs.service;
|
package codes.thischwa.jdvs.service;
|
||||||
|
|
||||||
import codes.thischwa.jdvs.config.JvsConfig;
|
import codes.thischwa.jdvs.config.JdvsConfig;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -17,10 +17,10 @@ import org.springframework.stereotype.Service;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class JavadocService {
|
public class JavadocService {
|
||||||
private final JvsConfig jvsConfig;
|
private final JdvsConfig jdvsConfig;
|
||||||
|
|
||||||
public boolean generateJavadoc(String projectName, File repoDir) {
|
public boolean generateJavadoc(String projectName, File repoDir) {
|
||||||
File outputDir = Path.of(jvsConfig.getBaseDir(), "javadoc", projectName).toFile();
|
File outputDir = Path.of(jdvsConfig.getBaseDir(), "javadoc", projectName).toFile();
|
||||||
if (!outputDir.exists()) {
|
if (!outputDir.exists()) {
|
||||||
outputDir.mkdirs();
|
outputDir.mkdirs();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,9 @@
|
|||||||
package codes.thischwa.jdvs.service;
|
package codes.thischwa.jdvs.service;
|
||||||
|
|
||||||
import codes.thischwa.jdvs.config.JvsConfig;
|
import codes.thischwa.jdvs.config.JdvsConfig;
|
||||||
import codes.thischwa.jdvs.model.GitRepository;
|
import codes.thischwa.jdvs.model.GitRepository;
|
||||||
import codes.thischwa.jdvs.repository.GitRepositoryRepository;
|
import codes.thischwa.jdvs.repository.GitRepositoryRepository;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
|
|
||||||
import jakarta.annotation.PostConstruct;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -16,33 +12,20 @@ import org.springframework.stereotype.Service;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class RepoConfigLoader {
|
public class RepoConfigLoader {
|
||||||
private final JvsConfig jvsConfig;
|
private final JdvsConfig jdvsConfig;
|
||||||
private final GitRepositoryRepository repository;
|
private final GitRepositoryRepository repository;
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
public void loadConfig() {
|
public void loadConfig() {
|
||||||
File configFile = new File(jvsConfig.getConfigPath());
|
if (jdvsConfig.getRepositories() != null) {
|
||||||
if (!configFile.exists()) {
|
for (JdvsConfig.RepoConfig repoCfg : jdvsConfig.getRepositories()) {
|
||||||
log.info("Configuration file {} not found.", jvsConfig.getConfigPath());
|
if (repository.findByName(repoCfg.getName()).isEmpty()) {
|
||||||
return;
|
GitRepository repo = new GitRepository();
|
||||||
}
|
repo.setName(repoCfg.getName());
|
||||||
|
repo.setUrl(repoCfg.getUrl());
|
||||||
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
|
repository.save(repo);
|
||||||
try {
|
log.info("Repository {} added from configuration.", repoCfg.getName());
|
||||||
JvsConfig yamlConfig = mapper.readValue(configFile, JvsConfig.class);
|
|
||||||
if (yamlConfig.getRepositories() != null) {
|
|
||||||
for (JvsConfig.RepoConfig repoCfg : yamlConfig.getRepositories()) {
|
|
||||||
if (repository.findByName(repoCfg.getName()).isEmpty()) {
|
|
||||||
GitRepository repo = new GitRepository();
|
|
||||||
repo.setName(repoCfg.getName());
|
|
||||||
repo.setUrl(repoCfg.getUrl());
|
|
||||||
repository.save(repo);
|
|
||||||
log.info("Repository {} added from configuration.", repoCfg.getName());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
|
||||||
log.error("Error reading configuration file", e);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
package codes.thischwa.jdvs.service;
|
package codes.thischwa.jdvs.service;
|
||||||
|
|
||||||
import codes.thischwa.jdvs.config.JvsConfig;
|
import codes.thischwa.jdvs.config.JdvsConfig;
|
||||||
import codes.thischwa.jdvs.model.GitRepository;
|
import codes.thischwa.jdvs.model.GitRepository;
|
||||||
import codes.thischwa.jdvs.repository.GitRepositoryRepository;
|
import codes.thischwa.jdvs.repository.GitRepositoryRepository;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -21,16 +25,36 @@ public class UpdateScheduler {
|
|||||||
private final GitRepositoryRepository repository;
|
private final GitRepositoryRepository repository;
|
||||||
private final GitService gitService;
|
private final GitService gitService;
|
||||||
private final JavadocService javadocService;
|
private final JavadocService javadocService;
|
||||||
private final JvsConfig jvsConfig;
|
private final JdvsConfig jdvsConfig;
|
||||||
|
private final RepoConfigLoader repoConfigLoader;
|
||||||
|
|
||||||
@EventListener(ApplicationReadyEvent.class)
|
@EventListener(ApplicationReadyEvent.class)
|
||||||
public void onApplicationReady() {
|
public void onApplicationReady() {
|
||||||
if (jvsConfig.isRunOnStart()) {
|
if (jdvsConfig.isCleanOnStart()) {
|
||||||
|
log.info("'jdvs.clean-on-start' is enabled – cleaning base directory and database.");
|
||||||
|
cleanBaseDir();
|
||||||
|
repository.deleteAll();
|
||||||
|
}
|
||||||
|
repoConfigLoader.loadConfig();
|
||||||
|
if (jdvsConfig.isRunOnStart()) {
|
||||||
log.info("'jdvs.run-on-start' is enabled – running initial update.");
|
log.info("'jdvs.run-on-start' is enabled – running initial update.");
|
||||||
updateAll();
|
updateAll();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void cleanBaseDir() {
|
||||||
|
Path baseDir = Path.of(jdvsConfig.getBaseDir());
|
||||||
|
if (!Files.exists(baseDir)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try (var stream = Files.walk(baseDir)) {
|
||||||
|
stream.sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete);
|
||||||
|
log.info("Deleted base directory: {}", baseDir);
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error("Failed to delete base directory: {}", baseDir, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Scheduled(cron = "${jdvs.cron}")
|
@Scheduled(cron = "${jdvs.cron}")
|
||||||
public void updateAll() {
|
public void updateAll() {
|
||||||
log.info("Starting scheduled update of repositories...");
|
log.info("Starting scheduled update of repositories...");
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package codes.thischwa.jdvs.web;
|
package codes.thischwa.jdvs.web;
|
||||||
|
|
||||||
import codes.thischwa.jdvs.config.JvsConfig;
|
import codes.thischwa.jdvs.config.JdvsConfig;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
||||||
@@ -8,15 +8,15 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
public class WebConfig implements WebMvcConfigurer {
|
public class WebConfig implements WebMvcConfigurer {
|
||||||
private final JvsConfig jvsConfig;
|
private final JdvsConfig jdvsConfig;
|
||||||
|
|
||||||
public WebConfig(JvsConfig jvsConfig) {
|
public WebConfig(JdvsConfig jdvsConfig) {
|
||||||
this.jvsConfig = jvsConfig;
|
this.jdvsConfig = jdvsConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||||
String javadocPath = Path.of(jvsConfig.getBaseDir(), "javadoc").toAbsolutePath().toUri().toString();
|
String javadocPath = Path.of(jdvsConfig.getBaseDir(), "javadoc").toAbsolutePath().toUri().toString();
|
||||||
if (!javadocPath.endsWith("/")) {
|
if (!javadocPath.endsWith("/")) {
|
||||||
javadocPath += "/";
|
javadocPath += "/";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
|
jdvs:
|
||||||
|
base-dir: ./javadoc-storage
|
||||||
|
cron: 0 0/15 * * * ?
|
||||||
|
clean-on-start: false
|
||||||
|
run-on-start: false
|
||||||
|
|
||||||
|
## import of the individual configuration settings
|
||||||
spring:
|
spring:
|
||||||
|
config:
|
||||||
|
import: optional:file:./jdvs.yml
|
||||||
|
|
||||||
datasource:
|
datasource:
|
||||||
url: jdbc:h2:file:./database/jdvsdb
|
url: jdbc:h2:file:./database/jdvsdb
|
||||||
driverClassName: org.h2.Driver
|
driverClassName: org.h2.Driver
|
||||||
@@ -8,9 +18,3 @@ spring:
|
|||||||
database-platform: org.hibernate.dialect.H2Dialect
|
database-platform: org.hibernate.dialect.H2Dialect
|
||||||
hibernate:
|
hibernate:
|
||||||
ddl-auto: none
|
ddl-auto: none
|
||||||
|
|
||||||
jdvs:
|
|
||||||
config-path: ./jdvs.yml
|
|
||||||
base-dir: ./javadoc-storage
|
|
||||||
cron: 0 0/15 * * * ?
|
|
||||||
run-on-start: false
|
|
||||||
|
|||||||
Reference in New Issue
Block a user