Merge auto des nouvelles options de config au demarrage
Une mise a jour du plugin qui ajoute des cles de config n'obligeait pas a editer config.yml/config.properties a la main : les valeurs par defaut restaient invisibles pour l'admin. Desormais, au demarrage, les cles manquantes sont ajoutees dans le fichier existant sans toucher aux valeurs deja personnalisees. Spigot : merge via YamlConfiguration (perd les commentaires au prochain rewrite, limitation Bukkit). Velocity : simple ajout de lignes en fin de fichier, commentaires existants preserves. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
ffbeb2de66
commit
a76c641b7d
@@ -45,6 +45,8 @@ public class VoteConfig {
|
||||
}
|
||||
}
|
||||
|
||||
mergeMissingConfigKeys(configFile);
|
||||
|
||||
try (InputStream in = Files.newInputStream(configFile)) {
|
||||
properties.load(in);
|
||||
}
|
||||
@@ -68,6 +70,42 @@ public class VoteConfig {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajoute a la fin de config.properties les cles presentes dans le fichier par defaut du jar
|
||||
* mais absentes du fichier existant (nouvelles options apportees par une mise a jour du
|
||||
* plugin), sans jamais toucher aux lignes/valeurs deja presentes. Preserve donc aussi les
|
||||
* commentaires existants (simple ajout de lignes, pas de reecriture complete).
|
||||
*/
|
||||
private void mergeMissingConfigKeys(Path configFile) throws IOException {
|
||||
Properties defaults = new Properties();
|
||||
try (InputStream in = getClass().getClassLoader().getResourceAsStream("config.properties")) {
|
||||
if (in == null) {
|
||||
return;
|
||||
}
|
||||
defaults.load(in);
|
||||
}
|
||||
|
||||
Properties existing = new Properties();
|
||||
try (InputStream in = Files.newInputStream(configFile)) {
|
||||
existing.load(in);
|
||||
}
|
||||
|
||||
StringBuilder toAppend = new StringBuilder();
|
||||
for (String key : defaults.stringPropertyNames()) {
|
||||
if (!existing.containsKey(key)) {
|
||||
toAppend.append(key).append('=').append(defaults.getProperty(key)).append(System.lineSeparator());
|
||||
}
|
||||
}
|
||||
|
||||
if (toAppend.length() > 0) {
|
||||
String addition = System.lineSeparator()
|
||||
+ "# --- options ajoutees automatiquement par une mise a jour du plugin ---" + System.lineSeparator()
|
||||
+ toAppend;
|
||||
Files.writeString(configFile, addition, java.nio.file.StandardOpenOption.APPEND);
|
||||
logger.info("config.properties mis a jour avec les nouvelles options manquantes (valeurs existantes conservees).");
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isMysqlStorage() {
|
||||
return !"yaml".equalsIgnoreCase(storageType);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user