Skip to content

Commit

Permalink
Change meta embedding method, add version command
Browse files Browse the repository at this point in the history
  • Loading branch information
ZakShearman committed Jan 12, 2022
1 parent 06175ce commit 58d6a3e
Show file tree
Hide file tree
Showing 9 changed files with 119 additions and 16 deletions.
15 changes: 8 additions & 7 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,18 @@ tasks {
manifest {
attributes(
mapOf(
"Main-Class" to "pink.zak.minestom.operadora.Operadora",
"Specification-Vendor" to "Minestom",
"Specification-Title" to "Minestom",
"Operadora-Version" to archiveVersion,
"Operadora-Build" to if (System.getenv("BUILD_NUMBER") == null) "N/A" else System.getenv("BUILD_NUMBER"),
"Operadora-Git-Hash" to if (System.getenv("BUILD_VCS_NUMBER") == null) "N/A" else System.getenv("BUILD_VCS_NUMBER")
"Main-Class" to "pink.zak.minestom.operadora.Operadora"
)
)
}
}
processResources {
expand(mapOf(
"version" to version,
"build_number" to if (System.getenv("BUILD_NUMBER") == null) "unknown" else System.getenv("BUILD_NUMBER"),
"commit_hash" to if (System.getenv("BUILD_VCS_NUMBER") == null) "unknown" else System.getenv("BUILD_VCS_NUMBER")
))
}
named<Test>("test") {
useJUnitPlatform()
}
Expand All @@ -56,7 +58,6 @@ publishing {
groupId = "pink.zak.minestom.operadora"
artifactId = "operadora"

println("VERSION: $version")
from(components["java"])
}
}
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/pink/zak/minestom/operadora/Operadora.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import net.minestom.server.event.EventNode;
import org.jetbrains.annotations.NotNull;
import pink.zak.minestom.operadora.config.OperadoraConfig;
import pink.zak.minestom.operadora.config.OperadoraMeta;
import pink.zak.minestom.operadora.manager.CommandLoader;
import pink.zak.minestom.operadora.module.ModuleManager;
import pink.zak.minestom.operadora.module.hostsupport.HostSupportModule;
Expand All @@ -17,6 +18,7 @@ public class Operadora {
private static final Path BASE_PATH = Path.of("");
private static final EventNode<Event> EVENT_NODE = EventNode.all("operadora");
private static final OperadoraConfig OPERADORA_CONFIG = OperadoraConfig.load();
private static final OperadoraMeta OPERADORA_META = OperadoraMeta.load();

private static OperatorRepository operatorRepository;
private static WhitelistRepository whitelistRepository;
Expand Down Expand Up @@ -66,6 +68,10 @@ public static OperadoraConfig getOperadoraConfig() {
return OPERADORA_CONFIG;
}

public static OperadoraMeta getMeta() {
return OPERADORA_META;
}

public static OperatorRepository getOperatorRepository() {
return operatorRepository;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package pink.zak.minestom.operadora.command;

import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.JoinConfiguration;
import net.kyori.adventure.text.format.NamedTextColor;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.Command;
import net.minestom.server.command.builder.CommandContext;
import net.minestom.server.command.builder.arguments.ArgumentType;
import net.minestom.server.command.builder.arguments.ArgumentWord;
import net.minestom.server.extensions.DiscoveredExtension;
import net.minestom.server.extensions.Extension;
import net.minestom.server.extensions.ExtensionManager;
import pink.zak.minestom.operadora.Operadora;
import pink.zak.minestom.operadora.config.OperadoraMeta;

import java.util.Arrays;

public class VersionCommand extends Command {
private final OperadoraMeta meta = Operadora.getMeta();
private final ExtensionManager extensionManager = MinecraftServer.getExtensionManager();

public VersionCommand() {
super("version", "ver", "v");

ArgumentWord extensionArgument = ArgumentType.Word("extension").from(
this.extensionManager.getExtensions().stream()
.map(extension -> extension.getOrigin().getName())
.toArray(String[]::new)
);

this.setDefaultExecutor(this::versionCommand);
this.addSyntax(this::extensionVersionCommand, extensionArgument);
}

private void versionCommand(CommandSender sender, CommandContext context) {
Component content = Component.text("Running Operadora version " + this.meta.version() + " (#" + this.meta.buildNumber() + " git-" + this.meta.shortCommitHash() + ")");
sender.sendMessage(content);
}

private void extensionVersionCommand(CommandSender sender, CommandContext context) {
String extensionName = context.get("extension");
Extension extension = this.extensionManager.getExtension(extensionName);
DiscoveredExtension origin = extension.getOrigin();

JoinConfiguration joinConfiguration = JoinConfiguration.builder()
.separator(Component.text(", ", NamedTextColor.GREEN))
.build();

Component content = Component.text(extensionName + " v" + origin.getVersion() + " ", NamedTextColor.GREEN);

if (origin.getAuthors().length > 0)
content = content
.append(Component.text("\nAuthors: ", NamedTextColor.WHITE))
.append(Component.join(joinConfiguration, Arrays.stream(origin.getAuthors()).map(Component::text).toArray(Component[]::new)));

sender.sendMessage(content);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package pink.zak.minestom.operadora.config;

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import pink.zak.minestom.operadora.utils.data.FileUtils;

public record OperadoraMeta(String version, String buildNumber, String commitHash) {
private static final Logger LOGGER = LoggerFactory.getLogger(OperadoraMeta.class);

public static OperadoraMeta load() {
try {
String jsonString = new String(FileUtils.class.getClassLoader().getResourceAsStream("operadora.json").readAllBytes());
JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject();
System.out.println(jsonString);
System.out.println(jsonObject);
return new OperadoraMeta(
jsonObject.get("version").getAsString(),
jsonObject.get("buildNumber").getAsString(),
jsonObject.get("commitHash").getAsString()
);
} catch (Exception ex) {
LOGGER.error("Error loading OperadoraMeta (MANIFEST.MF)", ex);
return null;
}
}

public String shortCommitHash() {
return this.commitHash.substring(0, 7);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import pink.zak.minestom.operadora.command.ExtensionsCommand;
import pink.zak.minestom.operadora.command.OperadoraCommand;
import pink.zak.minestom.operadora.command.StopCommand;
import pink.zak.minestom.operadora.command.VersionCommand;
import pink.zak.minestom.operadora.command.gamemode.GamemodeCommand;
import pink.zak.minestom.operadora.command.operator.OperatorCommand;
import pink.zak.minestom.operadora.command.operator.RemoveOperatorCommand;
Expand All @@ -32,7 +33,8 @@ public class CommandLoader {
Map.entry("remove-operator", config -> new RemoveOperatorCommand()),
Map.entry("extensions", config -> new ExtensionsCommand()),
Map.entry("operadora", config -> new OperadoraCommand()),
Map.entry("stop", config -> new StopCommand())
Map.entry("stop", config -> new StopCommand()),
Map.entry("version", config -> new VersionCommand())
);
}

Expand All @@ -55,8 +57,4 @@ public CommandLoader() {
}
}
}

public void registerCommands() {

}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package pink.zak.minestom.operadora.utils.data;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -14,7 +13,7 @@

public abstract class BasicJsonRepository {
protected static final Logger LOGGER = LoggerFactory.getLogger(BasicJsonRepository.class);
protected static final Gson GSON = new GsonBuilder().create();
protected static final Gson GSON = new Gson();
protected final Path path;

public BasicJsonRepository(Path path) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package pink.zak.minestom.operadora.utils.data.repository.json;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import org.jetbrains.annotations.NotNull;
Expand All @@ -19,7 +18,7 @@
import java.util.stream.Collectors;

public abstract class JsonRepository<ID, T> implements Repository<ID, T>, IdStringConverter<ID> {
protected static final Gson GSON = new GsonBuilder().create();
protected static final Gson GSON = new Gson();
protected final Path basePath;

public JsonRepository(Path folder) {
Expand Down
3 changes: 3 additions & 0 deletions src/main/resources/commands.conf
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,7 @@ operadora: {
}
stop: {
enabled = true
}
version: {
enabled = true
}
5 changes: 5 additions & 0 deletions src/main/resources/operadora.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"version": "${version}",
"buildNumber": "${build_number}",
"commitHash": "${commit_hash}"
}

0 comments on commit 58d6a3e

Please sign in to comment.