Inceptum/src/main/java/io/gitlab/jfronny/inceptum/install/steps/WriteMetadataStep.java

56 lines
2.3 KiB
Java
Raw Normal View History

2021-10-29 22:50:42 +02:00
package io.gitlab.jfronny.inceptum.install.steps;
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;
2021-10-29 22:50:42 +02:00
import io.gitlab.jfronny.inceptum.util.Utils;
2021-10-30 19:26:59 +02:00
import io.gitlab.jfronny.inceptum.windows.AlertWindow;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
2021-10-29 22:50:42 +02:00
import java.io.IOException;
import java.nio.file.Files;
2021-10-29 22:50:42 +02:00
import java.nio.file.Path;
import java.util.concurrent.atomic.AtomicBoolean;
2021-10-29 22:50:42 +02:00
public class WriteMetadataStep implements Step {
@Override
public void execute(SetupStepInfo info, AtomicBoolean stopThread) throws IOException {
2021-10-30 19:26:59 +02:00
info.setState("Writing metadata");
Path instance = Inceptum.INSTANCE_DIR.resolve(info.name());
Path metaDir = instance.resolve("instance.json");
2021-10-29 22:50:42 +02:00
InstanceMeta meta = new InstanceMeta();
meta.version = info.version().id;
Utils.writeObject(metaDir, meta);
2021-10-30 19:26:59 +02:00
Path lock = instance.resolve("inceptum.setup.lock");
2021-10-30 16:12:39 +02:00
if (Files.exists(lock)) Files.delete(lock);
2021-10-30 19:26:59 +02:00
if (!Files.exists(instance.resolve(".gitignore"))) {
Files.writeString(instance.resolve(".gitignore"), """
realms_persistence.json
saves/
screenshots/
logs/
.mixin.out/
.fabric/
mods/*.jar""");
}
Path gitDir = instance.resolve(".git");
if (!Files.exists(gitDir)) {
try (Git git = Git.init()
.setDirectory(instance.toFile())
.setGitDir(gitDir.toFile())
.call()) {
//TODO use proper git identity
git.add().addFilepattern(".").call();
git.commit().setMessage("Initial commit")
.setSign(false)
.setAuthor("Inceptum", "inceptum@jfronny.gitlab.io").call();
} catch (GitAPIException e) {
Inceptum.LOGGER.error("Could not initialize git", e);
Inceptum.open(new AlertWindow("Could not initialize git", e.toString()));
}
}
2021-10-29 22:50:42 +02:00
}
}