8000 Rework plugin config system by DerEchtePilz · Pull Request #596 · CommandAPI/CommandAPI · GitHub
[go: up one dir, main page]

Skip to content

Rework plugin config system #596

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

Merged
merged 26 commits into from
Oct 8, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
d4bdade
Rework plugin config system
DerEchtePilz Aug 20, 2024
2c698f8
Use a loop instead of a Stream
DerEchtePilz Aug 21, 2024
9ca2efe
We want stacktraces
DerEchtePilz Aug 21, 2024
77029d2
Include generated config.yml in the documentation
DerEchtePilz Aug 23, 2024
6bdc2fd
Address code review
DerEchtePilz Sep 5, 2024
86b3f27
Use a LinkedHashMap for config options
DerEchtePilz Sep 5, 2024
3140b23
First iteration of an extendable and testable config system
DerEchtePilz Sep 7, 2024
78b1f7c
Update config system to be platform agnostic
DerEchtePilz Sep 15, 2024
a21e635
Clean up dependencies
DerEchtePilz Sep 15, 2024
a0bd0ef
Fix stuff
DerEchtePilz Sep 22, 2024
90fac61
Annotations
DerEchtePilz Sep 22, 2024
5b8886a
Fix Annotations
DerEchtePilz Sep 22, 2024
460a466
Fix more stuff
DerEchtePilz Sep 23, 2024
25b040e
Fix defaults in config.md
DerEchtePilz Sep 23, 2024
7d2ef1e
Simplify a thing
DerEchtePilz Sep 23, 2024
beeca43
Fix VelocityConfigurationAdapter#getKeys()
DerEchtePilz Sep 23, 2024
32b7eed
Don't update the Velocity config if not necessary
DerEchtePilz Sep 23, 2024
e1c35d7
Clean up Velocity plugin class
DerEchtePilz Sep 24, 2024
be6dfa3
Create static method to create a dummy instance
DerEchtePilz Sep 25, 2024
0e0d2d5
Remove Velocity config file
DerEchtePilz Sep 25, 2024
2698520
Introduce common modules to not include config classes in API modules
DerEchtePilz Sep 26, 2024
aa0d977
Remove unnecessary dependency
DerEchtePilz Sep 28, 2024
bff49cd
Move more common classes into the common module
DerEchtePilz Sep 28, 2024
677d545
Inline some stuff
DerEchtePilz Sep 28, 2024
f66e16c
Address code review
DerEchtePilz Oct 7, 2024
392d77f
More code review
DerEchtePilz Oct 7, 2024
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
Prev Previous commit
Next Next commit
Don't update the Velocity config if not necessary
  • Loading branch information
DerEchtePilz committed Oct 3, 2024
commit 32b7eedea9b94cb6ba5fcd965fd665bbb7677a9e
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public CommandAPIMain(ProxyServer server, Logger logger, @DataDirectory Path dat
.path(configFile)
.build();

new VelocityConfigurationAdapter(null, null).saveDefaultConfig(configFile.getParent().toFile(), configFile.toFile(), null);
new VelocityConfigurationAdapter(null, null, null).saveDefaultConfig(configFile.getParent().toFile(), configFile.toFile(), null);

// If the config doesn't exist, load it from the resources

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,14 @@
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Logger;

public record VelocityConfigurationAdapter(YamlConfigurationLoader loader, CommentedConfigurationNode config) implements ConfigurationAdapter<ConfigurationNode> {
public record VelocityConfigurationAdapter(YamlConfigurationLoader loader, CommentedConfigurationNode config, DefaultVelocityConfig defaultVelocityConfig) implements ConfigurationAdapter<ConfigurationNode> {

@Override
public void setValue(String key, Object value) {
Expand All @@ -43,7 +45,9 @@ public Object getValue(String key) {

@Override
public String[] getComment(String key) {
return new String[0];
CommentedConfigOption<?> option = defaultVelocityConfig.getAllOptions().get(key);
CommentedSection section = defaultVelocityConfig.getAllSections().get(key);
return option != null ? option.comment() : section.comment();
}

@Override
Expand Down Expand Up @@ -89,7 +93,7 @@ public ConfigurationAdapter<ConfigurationNode> complete() {

@Override
public ConfigurationAdapter<ConfigurationNode> createNew() {
return new VelocityConfigurationAdapter(loader, loader.createNode());
return new VelocityConfigurationAdapter(loader, loader.createNode(), DefaultVelocityConfig.createDefault());
}

@Override
Expand All @@ -98,12 +102,13 @@ public void saveDefaultConfig(File directory, File configFile, Logger logger) {
.nodeStyle(NodeStyle.BLOCK)
.file(configFile)
.build();
ConfigGenerator configGenerator = ConfigGenerator.createNew(DefaultVelocityConfig.createDefault());
DefaultVelocityConfig defaultConfig = DefaultVelocityConfig.createDefault();
ConfigGenerator configGenerator = ConfigGenerator.createNew(defaultConfig);
if (!directory.exists()) {
directory.mkdirs();

try {
ConfigurationAdapter<ConfigurationNode> velocityConfigurationAdapter = new VelocityConfigurationAdapter(configLoader, configLoader.createNode());
ConfigurationAdapter<ConfigurationNode> velocityConfigurationAdapter = new VelocityConfigurationAdapter(configLoader, configLoader.createNode(), defaultConfig);
configGenerator.populateDefaultConfig(velocityConfigurationAdapter);
configLoader.save(velocityConfigurationAdapter.config());
} catch (IOException e) {
Expand All @@ -113,7 +118,7 @@ public void saveDefaultConfig(File directory, File configFile, Logger logger) {
try {
// If the config does exist, update it if necessary
CommentedConfigurationNode existingYamlConfig = configLoader.load();
ConfigurationAdapter<ConfigurationNode> existingConfig = new VelocityConfigurationAdapter(configLoader, existingYamlConfig);
ConfigurationAdapter<ConfigurationNode> existingConfig = new VelocityConfigurationAdapter(configLoader, existingYamlConfig, defaultConfig);
ConfigurationAdapter<ConfigurationNode> updatedConfig = configGenerator.generateWithNewValues(existingConfig);
if (updatedConfig != null) {
configLoader.save(updatedConfig.config());
Expand Down
0