package io.gitlab.jfronny.inceptum.util.install.steps; import io.gitlab.jfronny.inceptum.Inceptum; import io.gitlab.jfronny.inceptum.util.install.SetupStepInfo; import io.gitlab.jfronny.inceptum.util.install.Step; import io.gitlab.jfronny.inceptum.model.inceptum.InstanceMeta; import io.gitlab.jfronny.inceptum.util.ConfigHolder; import io.gitlab.jfronny.inceptum.util.InstanceLock; import io.gitlab.jfronny.inceptum.util.MetaHolder; import io.gitlab.jfronny.inceptum.util.Utils; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.concurrent.atomic.AtomicBoolean; public class WriteMetadataStep implements Step { @Override public void execute(SetupStepInfo info, AtomicBoolean stopThread) throws IOException { info.setState("Writing metadata"); Path instance = MetaHolder.INSTANCE_DIR.resolve(info.name()); Path metaDir = instance.resolve("instance.json"); InstanceMeta meta = new InstanceMeta(); meta.version = info.version().id; Utils.writeObject(metaDir, meta); InstanceLock.setSetupLock(instance, false); if (!Files.exists(instance.resolve(".gitignore"))) { Files.writeString(instance.resolve(".gitignore"), """ realms_persistence.json saves/ screenshots/ logs/ .mixin.out/ .fabric/ *.lock eula.txt world/"""); } Path gitDir = instance.resolve(".git"); if (!Files.exists(gitDir)) { try (Git git = Git.init() .setDirectory(instance.toFile()) .setGitDir(gitDir.toFile()) .call()) { git.commit() .setAll(true) .setMessage("Initial commit") .setSign(false) .setAuthor(ConfigHolder.CONFIG.git.commitUsername, ConfigHolder.CONFIG.git.commitMail) .call(); } catch (GitAPIException e) { Inceptum.showError("Could not initialize Git", e); } } } }