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; import io.gitlab.jfronny.inceptum.util.InstanceLock; import io.gitlab.jfronny.inceptum.util.Utils; import org.eclipse.jgit.api.CommitCommand; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.CanceledException; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.CommitBuilder; import org.eclipse.jgit.lib.GpgSigner; import org.eclipse.jgit.lib.PersonIdent; import org.eclipse.jgit.transport.ChainingCredentialsProvider; import org.eclipse.jgit.transport.CredentialsProvider; import org.eclipse.jgit.transport.NetRCCredentialsProvider; import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; import org.eclipse.jgit.util.SystemReader; 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 = Inceptum.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(Inceptum.CONFIG.git.commitUsername, Inceptum.CONFIG.git.commitMail) .call(); } catch (GitAPIException e) { Inceptum.showError("Could not initialize Git", e); } } } }