Allow edit window on running instance but add a warning
This commit is contained in:
parent
dc312a94ad
commit
a577f5676f
|
@ -3,9 +3,8 @@ package io.gitlab.jfronny.inceptum.cli;
|
|||
import io.gitlab.jfronny.inceptum.Inceptum;
|
||||
import io.gitlab.jfronny.inceptum.install.Steps;
|
||||
import io.gitlab.jfronny.inceptum.model.inceptum.InstanceMeta;
|
||||
import io.gitlab.jfronny.inceptum.util.InceptumLockReader;
|
||||
import io.gitlab.jfronny.inceptum.util.InstanceLock;
|
||||
import io.gitlab.jfronny.inceptum.util.launch.ClientLauncher;
|
||||
import io.gitlab.jfronny.inceptum.util.ProcessUtils;
|
||||
import io.gitlab.jfronny.inceptum.util.Utils;
|
||||
import io.gitlab.jfronny.inceptum.util.api.account.AccountManager;
|
||||
import io.gitlab.jfronny.inceptum.util.launch.InstanceLauncher;
|
||||
|
@ -14,7 +13,6 @@ import java.io.IOException;
|
|||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Optional;
|
||||
|
||||
public class LaunchCommand extends Command {
|
||||
public LaunchCommand() {
|
||||
|
@ -49,12 +47,12 @@ public class LaunchCommand extends Command {
|
|||
Inceptum.LOGGER.error("Not a valid instance");
|
||||
return;
|
||||
}
|
||||
if (InceptumLockReader.isSetupLocked(instanceDir)) {
|
||||
if (InstanceLock.isSetupLocked(instanceDir)) {
|
||||
Inceptum.LOGGER.error("This instance is still being set up");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
if (InceptumLockReader.isRunningLocked(instanceDir)) {
|
||||
if (InstanceLock.isRunningLocked(instanceDir)) {
|
||||
Inceptum.LOGGER.error("This instance is already running");
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -6,14 +6,12 @@ import io.gitlab.jfronny.inceptum.model.inceptum.InstanceMeta;
|
|||
import io.gitlab.jfronny.inceptum.model.inceptum.LoaderInfo;
|
||||
import io.gitlab.jfronny.inceptum.model.mojang.VersionInfo;
|
||||
import io.gitlab.jfronny.inceptum.model.mojang.VersionsListInfo;
|
||||
import io.gitlab.jfronny.inceptum.util.InceptumLockReader;
|
||||
import io.gitlab.jfronny.inceptum.util.ProcessUtils;
|
||||
import io.gitlab.jfronny.inceptum.util.InstanceLock;
|
||||
import io.gitlab.jfronny.inceptum.util.Utils;
|
||||
import io.gitlab.jfronny.inceptum.util.api.FabricMetaApi;
|
||||
import io.gitlab.jfronny.inceptum.util.api.McApi;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
|
@ -42,7 +40,7 @@ public class Steps {
|
|||
}
|
||||
|
||||
public static void reDownload(Path instance) throws IOException {
|
||||
if (InceptumLockReader.isLocked(instance)) return;
|
||||
if (InstanceLock.isLocked(instance)) return;
|
||||
InstanceMeta im = Utils.loadObject(instance.resolve("instance.json"), InstanceMeta.class);
|
||||
boolean found = false;
|
||||
for (VersionsListInfo version : McApi.getVersions().versions) {
|
||||
|
|
|
@ -5,7 +5,7 @@ import io.gitlab.jfronny.inceptum.install.SetupStepInfo;
|
|||
import io.gitlab.jfronny.inceptum.install.Step;
|
||||
import io.gitlab.jfronny.inceptum.model.inceptum.InstanceMeta;
|
||||
import io.gitlab.jfronny.inceptum.model.inceptum.LoaderInfo;
|
||||
import io.gitlab.jfronny.inceptum.util.InceptumLockReader;
|
||||
import io.gitlab.jfronny.inceptum.util.InstanceLock;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
|
@ -17,7 +17,7 @@ public class SetupDirsStep implements Step {
|
|||
public void execute(SetupStepInfo info, AtomicBoolean stopThread) throws IOException {
|
||||
info.setState("Setting up instance dirs");
|
||||
Path iDir = Inceptum.INSTANCE_DIR.resolve(info.name());
|
||||
InceptumLockReader.setSetupLock(iDir, true);
|
||||
InstanceLock.setSetupLock(iDir, true);
|
||||
if (!Files.exists(iDir)) {
|
||||
Files.createDirectories(iDir.resolve("resourcepacks"));
|
||||
Files.createDirectories(iDir.resolve("saves"));
|
||||
|
|
|
@ -4,7 +4,7 @@ import io.gitlab.jfronny.inceptum.Inceptum;
|
|||
import io.gitlab.jfronny.inceptum.install.SetupStepInfo;
|
||||
import io.gitlab.jfronny.inceptum.install.Step;
|
||||
import io.gitlab.jfronny.inceptum.model.inceptum.InstanceMeta;
|
||||
import io.gitlab.jfronny.inceptum.util.InceptumLockReader;
|
||||
import io.gitlab.jfronny.inceptum.util.InstanceLock;
|
||||
import io.gitlab.jfronny.inceptum.util.Utils;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.errors.GitAPIException;
|
||||
|
@ -23,7 +23,7 @@ public class WriteMetadataStep implements Step {
|
|||
InstanceMeta meta = new InstanceMeta();
|
||||
meta.version = info.version().id;
|
||||
Utils.writeObject(metaDir, meta);
|
||||
InceptumLockReader.setSetupLock(instance, false);
|
||||
InstanceLock.setSetupLock(instance, false);
|
||||
if (!Files.exists(instance.resolve(".gitignore"))) {
|
||||
Files.writeString(instance.resolve(".gitignore"), """
|
||||
realms_persistence.json
|
||||
|
|
|
@ -4,7 +4,7 @@ import java.io.IOException;
|
|||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
|
||||
public class InceptumLockReader {
|
||||
public class InstanceLock {
|
||||
private static final String INCEPTUM_LOCK = "inceptum.lock";
|
||||
private static final String INCEPTUM_SETUP_LOCK = "inceptum.setup.lock";
|
||||
public static void setSetupLock(Path instancePath, boolean state) throws IOException {
|
|
@ -119,7 +119,7 @@ public class InstanceLauncher {
|
|||
Runnable starterRunner = () -> {
|
||||
try {
|
||||
proc.set(pb.start());
|
||||
InceptumLockReader.setRunningLock(instancePath, proc.get().pid());
|
||||
InstanceLock.setRunningLock(instancePath, proc.get().pid());
|
||||
} catch (IOException e) {
|
||||
Inceptum.LOGGER.error("Could not start " + launchType.name, e);
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import io.gitlab.jfronny.inceptum.InceptumGui;
|
|||
import io.gitlab.jfronny.inceptum.install.Steps;
|
||||
import io.gitlab.jfronny.inceptum.model.inceptum.InstanceMeta;
|
||||
import io.gitlab.jfronny.inceptum.model.inceptum.source.ModSource;
|
||||
import io.gitlab.jfronny.inceptum.util.InstanceLock;
|
||||
import io.gitlab.jfronny.inceptum.util.JvmUtils;
|
||||
import io.gitlab.jfronny.inceptum.util.ModsDirScanner;
|
||||
import io.gitlab.jfronny.inceptum.util.Utils;
|
||||
|
@ -43,6 +44,18 @@ public class InstanceEditWindow extends Window {
|
|||
|
||||
@Override
|
||||
public void draw() {
|
||||
if (InstanceLock.isSetupLocked(path)) {
|
||||
ImGui.text("This instance is still being set up.");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
if (InstanceLock.isRunningLocked(path)) {
|
||||
ImGui.text("This instance is running. Edits in this state will result in breakage.");
|
||||
}
|
||||
} catch (IOException e) {
|
||||
ImGui.text("Could not read lock state on this instance");
|
||||
Inceptum.LOGGER.error("Could not read lock state", e);
|
||||
}
|
||||
if (ImGui.beginTabBar("InstanceEdit" + path)) {
|
||||
if (ImGui.beginTabItem("General")) {
|
||||
if (ImGui.button("Open Directory")) {
|
||||
|
|
|
@ -6,9 +6,8 @@ import io.gitlab.jfronny.inceptum.Inceptum;
|
|||
import io.gitlab.jfronny.inceptum.InceptumGui;
|
||||
import io.gitlab.jfronny.inceptum.install.Steps;
|
||||
import io.gitlab.jfronny.inceptum.model.inceptum.InstanceMeta;
|
||||
import io.gitlab.jfronny.inceptum.util.InceptumLockReader;
|
||||
import io.gitlab.jfronny.inceptum.util.InstanceLock;
|
||||
import io.gitlab.jfronny.inceptum.util.launch.ClientLauncher;
|
||||
import io.gitlab.jfronny.inceptum.util.ProcessUtils;
|
||||
import io.gitlab.jfronny.inceptum.util.Utils;
|
||||
import io.gitlab.jfronny.inceptum.windows.InstanceEditWindow;
|
||||
|
||||
|
@ -21,7 +20,7 @@ public class InstanceView {
|
|||
public static void draw(List<Path> paths) {
|
||||
if (ImGui.beginTable("Instances", 2, ImGuiTableFlags.SizingFixedFit | ImGuiTableFlags.Borders)) {
|
||||
for (Path path : paths) {
|
||||
if (InceptumLockReader.isSetupLocked(path)) {
|
||||
if (InstanceLock.isSetupLocked(path)) {
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text("Setting up");
|
||||
ImGui.tableNextColumn();
|
||||
|
@ -40,14 +39,14 @@ public class InstanceView {
|
|||
continue;
|
||||
}
|
||||
ImGui.tableNextColumn();
|
||||
boolean disabled = false;
|
||||
boolean runDisabled = false;
|
||||
try {
|
||||
if (InceptumLockReader.isRunningLocked(path))
|
||||
disabled = true;
|
||||
if (InstanceLock.isRunningLocked(path))
|
||||
runDisabled = true;
|
||||
} catch (IOException e) {
|
||||
continue;
|
||||
}
|
||||
if (disabled) ImGui.beginDisabled();
|
||||
if (runDisabled) ImGui.beginDisabled();
|
||||
if (ImGui.button(path.getFileName().toString())) {
|
||||
try {
|
||||
Steps.reDownload(path);
|
||||
|
@ -56,9 +55,9 @@ public class InstanceView {
|
|||
}
|
||||
ClientLauncher.launch(path, instance);
|
||||
}
|
||||
if (runDisabled) ImGui.endDisabled();
|
||||
ImGui.tableNextColumn();
|
||||
if (ImGui.button("Edit##" + path)) InceptumGui.open(new InstanceEditWindow(path, instance));
|
||||
if (disabled) ImGui.endDisabled();
|
||||
}
|
||||
ImGui.endTable();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue