mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-02-12 00:15:51 +01:00
test
This commit is contained in:
parent
c7c81a7243
commit
c565bd4400
@ -63,7 +63,6 @@ launch4j {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'org.yaml:snakeyaml:2.1'
|
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-web:3.1.2'
|
implementation 'org.springframework.boot:spring-boot-starter-web:3.1.2'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:3.1.2'
|
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:3.1.2'
|
||||||
|
|
||||||
|
@ -1,10 +1,18 @@
|
|||||||
package stirling.software.SPDF.config;
|
package stirling.software.SPDF.config;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.springframework.context.ApplicationContextInitializer;
|
import org.springframework.context.ApplicationContextInitializer;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
@ -37,6 +45,57 @@ public class ConfigInitializer implements ApplicationContextInitializer<Configur
|
|||||||
throw new FileNotFoundException("Resource file not found: settings.yml.template");
|
throw new FileNotFoundException("Resource file not found: settings.yml.template");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// If user file exists, we need to merge it with the template from the classpath
|
||||||
|
List<String> templateLines;
|
||||||
|
try (InputStream in = getClass().getClassLoader().getResourceAsStream("settings.yml.template")) {
|
||||||
|
templateLines = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)).lines().collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mergeYamlFiles(templateLines, destPath, destPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mergeYamlFiles(List<String> templateLines, Path userFilePath, Path outputPath) throws IOException {
|
||||||
|
List<String> userLines = Files.readAllLines(userFilePath);
|
||||||
|
|
||||||
|
List<String> mergedLines = new ArrayList<>();
|
||||||
|
boolean insideAutoGenerated = false;
|
||||||
|
|
||||||
|
for (String line : templateLines) {
|
||||||
|
// Check if we've entered or left the AutomaticallyGenerated section
|
||||||
|
if (line.trim().equalsIgnoreCase("AutomaticallyGenerated:")) {
|
||||||
|
insideAutoGenerated = true;
|
||||||
|
mergedLines.add(line);
|
||||||
|
continue;
|
||||||
|
} else if (insideAutoGenerated && line.trim().isEmpty()) {
|
||||||
|
// We have reached the end of the AutomaticallyGenerated section
|
||||||
|
insideAutoGenerated = false;
|
||||||
|
mergedLines.add(line);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (insideAutoGenerated) {
|
||||||
|
// Add lines from user's settings if we are inside AutomaticallyGenerated
|
||||||
|
Optional<String> userAutoGenValue = userLines.stream().filter(l -> l.trim().startsWith(line.split(":")[0].trim())).findFirst();
|
||||||
|
if (userAutoGenValue.isPresent()) {
|
||||||
|
mergedLines.add(userAutoGenValue.get());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Outside of AutomaticallyGenerated, continue as before
|
||||||
|
if (line.contains(": ")) {
|
||||||
|
String key = line.split(": ")[0].trim();
|
||||||
|
Optional<String> userValue = userLines.stream().filter(l -> l.trim().startsWith(key)).findFirst();
|
||||||
|
if (userValue.isPresent()) {
|
||||||
|
mergedLines.add(userValue.get());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mergedLines.add(line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Files.write(outputPath, mergedLines, StandardCharsets.UTF_8);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user