-
-
Notifications
You must be signed in to change notification settings - Fork 0
GH-48 Introduce simple update checker, using Modrinth api. #48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Summary of Changes
Hello @vLuckyyy, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
I've implemented a new module focused on providing a flexible update checking mechanism. This initial iteration includes an integration with the Modrinth API, allowing applications to programmatically determine if newer versions of their components are available. The changes also include foundational classes for handling version comparisons and update results, along with a clear example demonstrating how to use this new functionality.
Highlights
- New Update Checker Module: I've introduced a new
eternalcode-commons-updater
module, designed to provide a generic framework for checking software updates from various sources. This module includes core interfaces and classes likeUpdateChecker
,UpdateResult
, and aVersion
utility. - Modrinth API Integration: A concrete implementation,
ModrinthUpdateChecker
, has been added to interact with the Modrinth API. This allows the system to query Modrinth for the latest versions of projects and retrieve relevant download and release information. - Example Usage Module: To demonstrate the usage and integration of the new update checker, I've created an
eternalcode-commons-updater-example
module. This example showcases how to utilize theModrinthUpdateChecker
to check for updates for a specific project.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
Feature | Command | Description |
---|---|---|
Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/
folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments or fill out our survey to provide feedback.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request introduces a new module for checking for updates using the Modrinth API. The implementation contains some critical issues that need to be addressed. The version comparison logic is flawed and will not correctly identify newer versions in many cases. The Modrinth API client is using a fragile manual JSON parsing method that is also not compatible with the actual API response format, which will prevent it from working. Additionally, the error handling could be improved to be more resilient to network failures. I've left specific comments with suggestions on how to fix these issues.
public int compareTo(Version version) { | ||
return this.value.compareTo(version.value); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using String.compareTo
for version comparison is incorrect. It compares versions lexicographically, not numerically. For example, "1.10"
is considered less than "1.2"
because '1'
comes before '2'
in the second part of the string. This will lead to incorrect update detection.
A proper implementation should split the version string by .
and compare each component as a number. The suggestion below provides a basic implementation for numeric versions. For full compatibility with schemes like SemVer (e.g., handling pre-release tags like -alpha
), a more advanced parser or a dedicated library would be needed.
public int compareTo(Version version) {
String[] thisParts = this.value.split("-")[0].split("\\.");
String[] otherParts = version.value.split("-")[0].split("\\.");
int length = Math.max(thisParts.length, otherParts.length);
for (int i = 0; i < length; i++) {
int thisPart = i < thisParts.length && !thisParts[i].isEmpty() ? Integer.parseInt(thisParts[i]) : 0;
int otherPart = i < otherParts.length && !otherParts[i].isEmpty() ? Integer.parseInt(otherParts[i]) : 0;
if (thisPart != otherPart) {
return Integer.compare(thisPart, otherPart);
}
}
return 0;
}
...ommons-updater/src/main/java/com/eternalcode/commons/updater/impl/ModrinthUpdateChecker.java
Outdated
Show resolved
Hide resolved
...ommons-updater/src/main/java/com/eternalcode/commons/updater/impl/ModrinthUpdateChecker.java
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Follow Gemini - had the same issue in irl work XDD update 4.101 was older that 4.99 apparently
Uh oh!
There was an error while loading. Please reload this page.