From 11a40975d98f704e9b33230dd090070b2eca1793 Mon Sep 17 00:00:00 2001 From: JFronny Date: Thu, 3 Nov 2022 17:07:55 +0100 Subject: [PATCH] Attempt to set up updater for gitea --- .woodpecker.yml | 16 ++++ build.gradle.kts | 2 + common/build.gradle.kts | 4 +- .../jfronny/inceptum/common/Updater.java | 76 ++++++---------- .../inceptum/common/api/GitlabApi.java | 53 ----------- .../jfronny/inceptum/common/api/MavenApi.java | 37 +++++++- .../common/model/gitlab/GitlabArtifact.java | 11 --- .../common/model/gitlab/GitlabCommit.java | 23 ----- .../common/model/gitlab/GitlabJob.java | 29 ------ .../common/model/gitlab/GitlabPackage.java | 17 ---- .../model/gitlab/GitlabPackageFile.java | 19 ---- .../common/model/gitlab/GitlabPipeline.java | 19 ---- .../common/model/gitlab/GitlabProject.java | 89 ------------------- .../common/model/gitlab/GitlabRunner.java | 16 ---- .../common/model/gitlab/GitlabUser.java | 13 --- .../common/model/inceptum/UpdateMetadata.java | 12 +-- .../inceptum/common/model/maven/Pom.java | 2 + docs/Commands.md | 4 +- .../jfronny/inceptum/imgui/GuiMain.java | 2 +- .../setup/steps/DownloadLibrariesStep.java | 7 +- .../jfronny/inceptum/wrapper/Wrapper.java | 4 +- 21 files changed, 93 insertions(+), 362 deletions(-) delete mode 100644 common/src/main/java/io/gitlab/jfronny/inceptum/common/api/GitlabApi.java delete mode 100644 common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabArtifact.java delete mode 100644 common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabCommit.java delete mode 100644 common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabJob.java delete mode 100644 common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabPackage.java delete mode 100644 common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabPackageFile.java delete mode 100644 common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabPipeline.java delete mode 100644 common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabProject.java delete mode 100644 common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabRunner.java delete mode 100644 common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabUser.java diff --git a/.woodpecker.yml b/.woodpecker.yml index 5ca825c..99e5c0a 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -72,3 +72,19 @@ pipeline: strip_prefix: public/ when: - branch: master + publishRelease: + image: woodpeckerci/plugin-s3 + settings: + bucket: pages + region: nebula + path_style: true + endpoint: https://s3.frohnmeyer-wds.de + access_key: pages + secret_key: + from_secret: pages_secret + source: public/**/* + target: /${CI_REPO}/stable + strip_prefix: public/ + when: + - event: tag + branch: master diff --git a/build.gradle.kts b/build.gradle.kts index 1687865..3708234 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -21,6 +21,7 @@ val flavor: String by extra(if (flavorProp != "custom") flavorProp else OS.TYPE. val isPublic by extra(project.hasProperty("public")) val isRelease by extra(project.hasProperty("release")) +val buildTime by extra(System.currentTimeMillis()) val wrapperVersion by extra(1) tasks.register("exportMetadata") { @@ -30,6 +31,7 @@ tasks.register("exportMetadata") { { "wrapperVersion": $wrapperVersion, "version": "$version", + "buildTime": $buildTime, "isPublic": $isPublic, "isRelease": $isRelease, "jvm": ${project(":common").extra["javaVersion"]}, diff --git a/common/build.gradle.kts b/common/build.gradle.kts index bfe3f08..71f4ba7 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -18,9 +18,9 @@ sourceSets { generate(project) { `class`("io.gitlab.jfronny.inceptum.common", "BuildMetadata") { val modifiers = "public static final" - import("io.gitlab.jfronny.commons.ComparableVersion") - fieldRaw("VERSION", "ComparableVersion", "new ComparableVersion(\"$version\")", modifiers) + field("VERSION", versionS, modifiers) + field("BUILD_TIME", rootProject.extra["buildTime"] as Long, modifiers) field("IS_PUBLIC", rootProject.extra["isPublic"] as Boolean, modifiers) field("IS_RELEASE", rootProject.extra["isRelease"] as Boolean, modifiers) field("VM_VERSION", javaVersion.majorVersion.toInt(), modifiers) diff --git a/common/src/main/java/io/gitlab/jfronny/inceptum/common/Updater.java b/common/src/main/java/io/gitlab/jfronny/inceptum/common/Updater.java index 4b759e8..2ae4f4e 100644 --- a/common/src/main/java/io/gitlab/jfronny/inceptum/common/Updater.java +++ b/common/src/main/java/io/gitlab/jfronny/inceptum/common/Updater.java @@ -1,10 +1,7 @@ package io.gitlab.jfronny.inceptum.common; -import io.gitlab.jfronny.commons.ComparableVersion; import io.gitlab.jfronny.commons.OSUtils; -import io.gitlab.jfronny.inceptum.common.api.GitlabApi; import io.gitlab.jfronny.inceptum.common.api.MavenApi; -import io.gitlab.jfronny.inceptum.common.model.gitlab.*; import io.gitlab.jfronny.inceptum.common.model.inceptum.*; import io.gitlab.jfronny.inceptum.common.model.maven.*; import org.jetbrains.annotations.Nullable; @@ -22,9 +19,12 @@ import java.util.stream.Collectors; import java.util.stream.Stream; public class Updater { + private static final String ARTIFACTS_URL = "https://pages.frohnmeyer-wds.de/JfMods/Inceptum/artifacts/"; + private static final String STABLE_URL = "https://pages.frohnmeyer-wds.de/JfMods/Inceptum/stable/"; + public static final String PROJECT_MAVEN = "https://maven.frohnmeyer-wds.de/artifacts/"; public static UpdateMetadata getUpdate() { - return Updater.check(InceptumConfig.channel, BuildMetadata.VERSION, channel -> { + return Updater.check(InceptumConfig.channel, true, channel -> { Utils.LOGGER.error("No stable version was found, switching to experimental channel"); InceptumConfig.channel = channel; InceptumConfig.saveConfig(); @@ -113,7 +113,7 @@ public class Updater { private static DependencyNode downloadLibrary(Set repositories, final String artifact, Set libraries) throws IOException, URISyntaxException { List exceptions = new LinkedList<>(); - for (String repository : Stream.concat(Stream.of(GitlabApi.PROJECT_MAVEN), repositories.stream()).toList()) { + for (String repository : Stream.concat(Stream.of(PROJECT_MAVEN), repositories.stream()).toList()) { Pom pom; try { pom = MavenApi.getPom(repository, artifact); @@ -128,7 +128,7 @@ public class Updater { dependencies.add(downloadLibrary(repositories, mvnName, libraries)); } } - MavenApi.downloadLibrary(repository, artifact); + MavenApi.downloadLibrary(repository, pom); libraries.add(artifact); return new DependencyNode(pom, dependencies); } @@ -143,44 +143,14 @@ public class Updater { return MetaHolder.LIBRARIES_DIR.resolve(MavenApi.mavenNotationToJarPath(artifact)).toAbsolutePath(); } - public static @Nullable UpdateMetadata check(UpdateChannel channel, ComparableVersion current, Consumer channelInvalid) { + public static @Nullable UpdateMetadata check(UpdateChannel channel, boolean versionCompare, Consumer channelInvalid) { try { - int jvm = Runtime.version().feature(); - GitlabProject project = GitlabApi.getProject(GitlabApi.PROJECT_ID); - UpdateMetadata experimental = null; + UpdateMetadata experimental = Net.downloadObject(ARTIFACTS_URL + "version.json", GC_UpdateMetadata::read); UpdateMetadata stable = null; - packageLoop:for (GitlabPackage info : GitlabApi.getPackages(project)) { - if (info.status.equals("default") && info.name.equals("io/gitlab/jfronny/inceptum/Inceptum")) { - for (GitlabPipeline pipeline : info.pipelines) { - if (!pipeline.ref.equals("master")) continue; - if (!pipeline.status.equals("success")) { - Utils.LOGGER.warn("Skipping failed CI build"); - continue; - } - for (GitlabJob job : GitlabApi.getJobs(project, pipeline.id)) { - if (!job.name.equals("build_test")) continue; - try { - UpdateMetadata update = Net.downloadObject(GitlabApi.PROJECTS + project.id + "/jobs/" + job.id + "/artifacts/version.json", GC_UpdateMetadata::read); - if (update.jvm > jvm) { - Utils.LOGGER.error("A newer JVM is required to use the latest inceptum version. Please update!"); - continue packageLoop; - } - if (experimental == null || experimental.version.compareTo(update.version) < 0) { - experimental = update; - } - if (!info.version.contains("-") && (stable == null || stable.version.compareTo(update.version) < 0)) { - stable = update; - } - } catch (IOException e) { - continue packageLoop; - } - } - } - } - } - if (experimental == null) { - throw new IOException("No version could be found"); - } else if (stable == null && channel == UpdateChannel.Stable) { + try { + stable = Net.downloadObject(STABLE_URL + "version.json", GC_UpdateMetadata::read); + } catch (Throwable ignored) {} + if (stable == null && channel == UpdateChannel.Stable) { channel = UpdateChannel.CI; channelInvalid.accept(channel); } @@ -188,19 +158,29 @@ public class Updater { case CI -> experimental; case Stable -> stable; }; - Utils.LOGGER.info("Latest version is " + info.version + ", current is " + current); - if (current.compareTo(info.version) >= 0) { - Utils.LOGGER.info("Up-to-date"); + if (info.jvm > Runtime.version().feature()) { + //TODO visual indication for this + Utils.LOGGER.error("A newer JVM is required to use the latest inceptum version. Please update!"); return null; } + if (versionCompare) { + Utils.LOGGER.info("Latest version is " + info.version + ", current is " + BuildMetadata.VERSION); + if (BuildMetadata.BUILD_TIME >= info.buildTime) { + Utils.LOGGER.info("Up-to-date"); + return null; + } + } return info; - } catch (IOException | URISyntaxException e) { + } catch (IOException e) { Utils.LOGGER.error("Could not check for updates", e); } return null; } - public static String getShadowJarUrl(UpdateMetadata metadata) { - return GitlabApi.PROJECT_MAVEN + "io/gitlab/jfronny/inceptum/Inceptum/" + metadata.version + "/Inceptum-" + metadata.version + "-" + Utils.getCurrentFlavor() + ".jar"; + public static String getShadowJarUrl(UpdateChannel channel) { + return switch (channel) { + case CI -> ARTIFACTS_URL; + case Stable -> STABLE_URL; + } + "/Inceptum-" + Utils.getCurrentFlavor() + ".jar"; } } diff --git a/common/src/main/java/io/gitlab/jfronny/inceptum/common/api/GitlabApi.java b/common/src/main/java/io/gitlab/jfronny/inceptum/common/api/GitlabApi.java deleted file mode 100644 index 897b7ca..0000000 --- a/common/src/main/java/io/gitlab/jfronny/inceptum/common/api/GitlabApi.java +++ /dev/null @@ -1,53 +0,0 @@ -package io.gitlab.jfronny.inceptum.common.api; - -import io.gitlab.jfronny.commons.HttpUtils; -import io.gitlab.jfronny.gson.compile.util.GList; -import io.gitlab.jfronny.gson.stream.JsonReader; -import io.gitlab.jfronny.inceptum.common.model.gitlab.*; - -import java.io.IOException; -import java.io.Reader; -import java.net.URISyntaxException; -import java.util.List; -import java.util.function.Predicate; - -public class GitlabApi { - public static final String PROJECTS = "https://gitlab.com/api/v4/projects/"; - - public static final long PROJECT_ID = 30862253L; - public static final String PROJECT_MAVEN = "https://gitlab.com/api/v4/projects/" + PROJECT_ID + "/packages/maven/"; - - public static GitlabProject getProject(Long projectId) throws IOException, URISyntaxException { - try (Reader r = HttpUtils.get(PROJECTS + projectId).sendReader()) { - return GC_GitlabProject.read(r); - } - } - - public static List getPackages(GitlabProject project) throws IOException, URISyntaxException { - try (JsonReader r = new JsonReader(HttpUtils.get(PROJECTS + project.id + "/packages?order_by=created_at&sort=desc").sendReader())) { - return GList.read(r, GC_GitlabPackage::read); - } - } - - public static List getJobs(GitlabProject project, Long pipelineId) throws IOException, URISyntaxException { - try (JsonReader r = new JsonReader(HttpUtils.get(PROJECTS + project.id + "/pipelines/" + pipelineId + "/jobs").sendReader())) { - List list = GList.read(r, GC_GitlabJob::read); - list.sort((left, right) -> right.created_at.compareTo(left.created_at)); - return list; - } - } - - public static GitlabPackageFile getFile(GitlabProject project, GitlabPackage packageInfo, Predicate isValid) throws IOException, URISyntaxException { - int page = 0; - while (true) { - try (JsonReader r = new JsonReader(HttpUtils.get(PROJECTS + project.id + "/packages/" + packageInfo.id + "/package_files?per_page=100&page=" + ++page).sendReader())) { - List files = GList.read(r, GC_GitlabPackageFile::read); - if (files.isEmpty()) return null; - for (GitlabPackageFile file : files) { - if (isValid.test(file)) - return file; - } - } - } - } -} diff --git a/common/src/main/java/io/gitlab/jfronny/inceptum/common/api/MavenApi.java b/common/src/main/java/io/gitlab/jfronny/inceptum/common/api/MavenApi.java index 53a211e..f885a05 100644 --- a/common/src/main/java/io/gitlab/jfronny/inceptum/common/api/MavenApi.java +++ b/common/src/main/java/io/gitlab/jfronny/inceptum/common/api/MavenApi.java @@ -28,10 +28,20 @@ public class MavenApi { } } - public static Path downloadLibrary(String repo, String artifact) throws IOException, URISyntaxException { - String path = mavenNotationToJarPath(artifact); - Path res = MetaHolder.LIBRARIES_DIR.resolve(path); - Net.downloadFile(Utils.join("/", repo, path), res); + public static Path downloadLibrary(String repo, Pom pom) throws IOException, URISyntaxException { + String artifact = pom.groupId + ':' + pom.artifactId + ':' + pom.version; + String rawArtifact = artifact; + if (pom.classifier != null || pom.snapshotVersion != null) { + artifact += ':'; + if (pom.snapshotVersion != null) artifact += pom.snapshotVersion; + if (pom.classifier != null) { + if (pom.snapshotVersion != null) artifact += '-'; + artifact += pom.classifier; + } + } + if (pom.classifier != null) rawArtifact += ':' + pom.classifier; + Path res = MetaHolder.LIBRARIES_DIR.resolve(mavenNotationToJarPath(rawArtifact)); + Net.downloadFile(Utils.join("/", repo, mavenNotationToJarPath(artifact)), res); return res; } @@ -94,6 +104,25 @@ public class MavenApi { } } } + case "classifier" -> result.classifier = node.getTextContent(); + case "versioning" -> { + for (Node node1 : iterable(node.getChildNodes())) { + if (node1.getNodeName().equals("snapshot")) { + String timestamp = null; + String buildNumber = null; + for (Node node2 : iterable(node1.getChildNodes())) { + switch (node2.getNodeName()) { + case "timestamp" -> timestamp = node2.getTextContent(); + case "buildNumber" -> buildNumber = node2.getTextContent(); + default -> {} + } + } + if (timestamp == null) throw new IOException("Pom snapshots lack timestamp"); + if (buildNumber == null) throw new IOException("Pom snapshots lack buildNumber"); + result.snapshotVersion = timestamp + '-' + buildNumber; + } + } + } default -> {} } } diff --git a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabArtifact.java b/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabArtifact.java deleted file mode 100644 index 91da44d..0000000 --- a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabArtifact.java +++ /dev/null @@ -1,11 +0,0 @@ -package io.gitlab.jfronny.inceptum.common.model.gitlab; - -import io.gitlab.jfronny.gson.compile.annotations.GSerializable; - -@GSerializable -public class GitlabArtifact { - public String file_type; - public Long size; - public String filename; - public String file_format; -} diff --git a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabCommit.java b/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabCommit.java deleted file mode 100644 index 5a26083..0000000 --- a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabCommit.java +++ /dev/null @@ -1,23 +0,0 @@ -package io.gitlab.jfronny.inceptum.common.model.gitlab; - -import io.gitlab.jfronny.gson.compile.annotations.GSerializable; - -import java.util.Date; -import java.util.List; - -@GSerializable -public class GitlabCommit { - public String id; - public String short_id; - public Date created_at; - public List parent_ids; - public String title; - public String message; - public String author_name; - public String author_email; - public Date authored_date; - public String committer_name; - public String committer_email; - public Date committed_date; - public String web_url; -} diff --git a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabJob.java b/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabJob.java deleted file mode 100644 index fa7059f..0000000 --- a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabJob.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.gitlab.jfronny.inceptum.common.model.gitlab; - -import io.gitlab.jfronny.gson.compile.annotations.GSerializable; - -import java.util.Date; -import java.util.List; - -@GSerializable -public class GitlabJob { - public Long id; - public String status; - public String stage; - public String name; - public String ref; - public Boolean tag; - public Boolean allow_failure; - public Date created_at; - public Date started_at; - public Date finished_at; - public Double duration; - public Double queued_duration; - public GitlabUser user; - public GitlabCommit commit; - public GitlabPipeline pipeline; - public String web_url; - public List artifacts; - public GitlabRunner runner; - public Date artifacts_expire_at; -} diff --git a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabPackage.java b/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabPackage.java deleted file mode 100644 index d8fdd82..0000000 --- a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabPackage.java +++ /dev/null @@ -1,17 +0,0 @@ -package io.gitlab.jfronny.inceptum.common.model.gitlab; - -import io.gitlab.jfronny.gson.compile.annotations.GSerializable; - -import java.util.Date; -import java.util.List; - -@GSerializable -public class GitlabPackage { - public Long id; - public String name; - public String version; - public String package_type; - public String status; - public Date created_at; - public List pipelines; -} diff --git a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabPackageFile.java b/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabPackageFile.java deleted file mode 100644 index 7296651..0000000 --- a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabPackageFile.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.gitlab.jfronny.inceptum.common.model.gitlab; - -import io.gitlab.jfronny.gson.compile.annotations.GSerializable; - -import java.util.Date; -import java.util.List; - -@GSerializable -public class GitlabPackageFile { - public Long id; - public Long package_id; - public Date created_at; - public String file_name; - public Integer size; - public String file_md5; - public String file_sha1; - public String file_sha256; - public List pipelines; -} diff --git a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabPipeline.java b/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabPipeline.java deleted file mode 100644 index 96d71c9..0000000 --- a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabPipeline.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.gitlab.jfronny.inceptum.common.model.gitlab; - -import io.gitlab.jfronny.gson.compile.annotations.GSerializable; - -import java.util.Date; - -@GSerializable -public class GitlabPipeline { - public long id; - public long project_id; - public String sha; - public String ref; - public String status; - public String source; - public Date created_at; - public Date updated_at; - public String web_url; - public GitlabUser user; -} diff --git a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabProject.java b/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabProject.java deleted file mode 100644 index f837ae5..0000000 --- a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabProject.java +++ /dev/null @@ -1,89 +0,0 @@ -package io.gitlab.jfronny.inceptum.common.model.gitlab; - -import io.gitlab.jfronny.gson.compile.annotations.GSerializable; - -import java.util.Date; - -@GSerializable -public class GitlabProject { - public Long id; - public String description; - public String name; - public String name_with_namespace; - public String path; - public String path_with_namespace; - public String created_at; - public String default_branch; - public String ssh_url_to_repo; - public String http_url_to_repo; - public String web_url; - public String readme_url; - public String avatar_url; - public Integer forks_count; - public Integer star_count; - public Date last_activity_at; - public Boolean packages_enabled; - public Boolean empty_repo; - public Boolean archived; - public String visibility; - public GitlabUser owner; - public Boolean resolve_outdated_diff_discussions; - public Boolean issues_enabled; - public Boolean merge_requests_enabled; - public Boolean wiki_enabled; - public Boolean jobs_enabled; - public Boolean snippets_enabled; - public Boolean container_registry_enabled; - public Boolean service_desk_enabled; - public String service_desk_address; - public Boolean can_create_merge_request_in; - public String issues_access_level; - public String repository_access_level; - public String merge_request_access_level; - public String forking_access_level; - public String wiki_access_level; - public String builds_access_level; - public String snippets_access_level; - public String pages_access_level; - public String operations_access_level; - public String analytics_access_level; - public String container_registry_access_level; - public Boolean emails_disabled; - public Boolean shared_runners_enabled; - public Boolean lfs_enabled; - public Long creator_id; - public String import_status; - public Integer open_issues_count; - public String runners_token; - public Integer ci_default_git_depth; - public Boolean ci_forward_deployment_enabled; - public Boolean ci_job_token_scope_enabled; - public Boolean public_jobs; - public String build_git_strategy; - public Integer build_timeout; - public String auto_cancel_pending_pipelines; - public String build_coverage_regex; - public String ci_config_path; - public Boolean only_allow_merge_if_pipeline_succeeds; - public Boolean restrict_user_defined_variables; - public Boolean request_access_enabled; - public Boolean only_allow_merge_if_all_discussions_are_resolved; - public Boolean remove_source_branch_after_merge; - public Boolean printing_merge_request_link_enabled; - public String merge_method; - public String squash_option; - public String suggestion_commit_message; - public Boolean auto_devops_enabled; - public String auto_devops_strategy; - public Boolean autoclose_referenced_issues; - public Boolean keep_latest_artifact; - public Integer approvals_before_merge; - public Boolean mirror; - public String external_authorization_classification_label; - public Integer requirements_enabled; - public Integer security_and_compliance_enabled; - public String issues_template; - public String merge_requests_template; - public Boolean merge_pipelines_enabled; - public Boolean merge_trains_enabled; -} diff --git a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabRunner.java b/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabRunner.java deleted file mode 100644 index 3a18e68..0000000 --- a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabRunner.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.gitlab.jfronny.inceptum.common.model.gitlab; - -import io.gitlab.jfronny.gson.compile.annotations.GSerializable; - -@GSerializable -public class GitlabRunner { - public Long id; - public String description; - public String ip_address; - public Boolean active; - public Boolean is_shared; - public String runner_type; - public String name; - public Boolean online; - public String deprecated_rest_status; -} diff --git a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabUser.java b/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabUser.java deleted file mode 100644 index 8887bd1..0000000 --- a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/gitlab/GitlabUser.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.gitlab.jfronny.inceptum.common.model.gitlab; - -import io.gitlab.jfronny.gson.compile.annotations.GSerializable; - -@GSerializable -public class GitlabUser { - public long id; - public String name; - public String username; - public String state; - public String avatar_url; - public String web_url; -} diff --git a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/inceptum/UpdateMetadata.java b/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/inceptum/UpdateMetadata.java index bfcaaba..e350c2b 100644 --- a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/inceptum/UpdateMetadata.java +++ b/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/inceptum/UpdateMetadata.java @@ -1,6 +1,5 @@ package io.gitlab.jfronny.inceptum.common.model.inceptum; -import io.gitlab.jfronny.commons.ComparableVersion; import io.gitlab.jfronny.gson.compile.annotations.GSerializable; import java.util.*; @@ -8,18 +7,11 @@ import java.util.*; @GSerializable public class UpdateMetadata { public Integer wrapperVersion; - public ComparableVersion version; + public String version; + public Long buildTime; public Boolean isPublic; public Boolean isRelease; public Integer jvm; public Set repositories; public Map> natives; - - // For serialization - public String getVersion() { - return version == null ? null : version.toString(); - } - public void setVersion(String version) { - this.version = new ComparableVersion(version); - } } diff --git a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/maven/Pom.java b/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/maven/Pom.java index 36d983d..ff495c2 100644 --- a/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/maven/Pom.java +++ b/common/src/main/java/io/gitlab/jfronny/inceptum/common/model/maven/Pom.java @@ -9,6 +9,8 @@ public class Pom { public String groupId; public String artifactId; public String version; + public String classifier; + public String snapshotVersion; @Nullable public String packaging; @Nullable public List dependencies; } diff --git a/docs/Commands.md b/docs/Commands.md index d6b0780..b55950f 100644 --- a/docs/Commands.md +++ b/docs/Commands.md @@ -1,11 +1,11 @@ # CLI -Inceptum provides a CLI which performs similar functions to the GUI. If you have feature requests, [open an issue](https://gitlab.com/jfmods/inceptum/-/issues) +Inceptum provides a CLI which performs similar functions to the GUI. If you have feature requests, [open an issue](https://helpdesk.frohnmeyer-wds.de/issue?repo=Inceptum&owner=JfMods) To view up-to-date information on the commands provided by Inceptum, run `inceptum help` or `inceptum help `, this page is intended to explain more advanced features ## The inceptum wrapper Inceptum Wrapper looks through the libraries dir and launches the latest available Inceptum version. -If it doesn't find a usable version, it will download the latest from GitLab. +If it doesn't find a usable version, it will download the latest available version automatically. Launching is performed through a custom ClassLoader and an internal flag is set to inform the launched version about the wrappers' presence. ## The "batch" command diff --git a/launcher-imgui/src/main/java/io/gitlab/jfronny/inceptum/imgui/GuiMain.java b/launcher-imgui/src/main/java/io/gitlab/jfronny/inceptum/imgui/GuiMain.java index 9526326..f37e06e 100644 --- a/launcher-imgui/src/main/java/io/gitlab/jfronny/inceptum/imgui/GuiMain.java +++ b/launcher-imgui/src/main/java/io/gitlab/jfronny/inceptum/imgui/GuiMain.java @@ -77,7 +77,7 @@ public class GuiMain { } else { LauncherEnv.showOkCancel("An update was found. Automatic installs are not supported without the wrapper but you can download it nonetheless", "Update found", () -> { try { - Utils.openWebBrowser(new URI(Updater.getShadowJarUrl(update))); + Utils.openWebBrowser(new URI(Updater.getShadowJarUrl(InceptumConfig.channel))); exit(); } catch (URISyntaxException e) { LauncherEnv.showError("Could not download update", e); diff --git a/launcher/src/main/java/io/gitlab/jfronny/inceptum/launcher/system/setup/steps/DownloadLibrariesStep.java b/launcher/src/main/java/io/gitlab/jfronny/inceptum/launcher/system/setup/steps/DownloadLibrariesStep.java index 9085a77..1d1381f 100644 --- a/launcher/src/main/java/io/gitlab/jfronny/inceptum/launcher/system/setup/steps/DownloadLibrariesStep.java +++ b/launcher/src/main/java/io/gitlab/jfronny/inceptum/launcher/system/setup/steps/DownloadLibrariesStep.java @@ -2,14 +2,15 @@ package io.gitlab.jfronny.inceptum.launcher.system.setup.steps; import io.gitlab.jfronny.commons.io.JFiles; import io.gitlab.jfronny.inceptum.common.*; -import io.gitlab.jfronny.inceptum.common.api.GitlabApi; import io.gitlab.jfronny.inceptum.common.api.MavenApi; import io.gitlab.jfronny.inceptum.launcher.model.inceptum.ArtifactInfo; import io.gitlab.jfronny.inceptum.launcher.model.mojang.VersionInfo; import io.gitlab.jfronny.inceptum.launcher.system.setup.Step; import io.gitlab.jfronny.inceptum.launcher.util.*; import io.gitlab.jfronny.inceptum.launcher.system.setup.SetupStepInfo; +import org.xml.sax.SAXException; +import javax.xml.stream.XMLStreamException; import java.io.IOException; import java.net.URISyntaxException; import java.nio.file.*; @@ -52,8 +53,8 @@ public class DownloadLibrariesStep implements Step { String artifact = getLaunchWrapperArtifact(); if (!Files.exists(MetaHolder.LIBRARIES_DIR.resolve(MavenApi.mavenNotationToJarPath(artifact)))) { try { - MavenApi.downloadLibrary(GitlabApi.PROJECT_MAVEN, artifact); - } catch (URISyntaxException e) { + MavenApi.downloadLibrary(Updater.PROJECT_MAVEN, MavenApi.getPom(Updater.PROJECT_MAVEN, artifact)); + } catch (URISyntaxException | XMLStreamException | SAXException e) { throw new IOException("Could not download launchwrapper", e); } } diff --git a/wrapper/src/main/java/io/gitlab/jfronny/inceptum/wrapper/Wrapper.java b/wrapper/src/main/java/io/gitlab/jfronny/inceptum/wrapper/Wrapper.java index 48a289e..65aa087 100644 --- a/wrapper/src/main/java/io/gitlab/jfronny/inceptum/wrapper/Wrapper.java +++ b/wrapper/src/main/java/io/gitlab/jfronny/inceptum/wrapper/Wrapper.java @@ -1,7 +1,5 @@ package io.gitlab.jfronny.inceptum.wrapper; -import io.gitlab.jfronny.commons.ComparableVersion; -import io.gitlab.jfronny.commons.io.JFiles; import io.gitlab.jfronny.inceptum.common.*; import io.gitlab.jfronny.inceptum.common.model.inceptum.*; @@ -18,7 +16,7 @@ public class Wrapper { System.out.println("Loading from " + MetaHolder.BASE_PATH); InceptumEnvironmentInitializer.initialize(); if (!Files.exists(MetaHolder.WRAPPER_CONFIG_PATH)) { - UpdateMetadata update = Updater.check(UpdateChannel.Stable, new ComparableVersion("0"), R::nop); + UpdateMetadata update = Updater.check(UpdateChannel.Stable, false, R::nop); if (update == null) { throw new FileNotFoundException("Could not identify a valid inceptum version. Are you connected to the internet?"); }