mirror of
https://github.com/CarmJos/GithubReleases4J.git
synced 2024-09-19 21:55:45 +00:00
[v1.3.0] [A] Add the method to fetch how many versions behind
This commit is contained in:
parent
c53ca18e96
commit
8445ac812d
2
pom.xml
2
pom.xml
@ -14,7 +14,7 @@
|
||||
|
||||
<groupId>cc.carm.lib</groupId>
|
||||
<artifactId>githubreleases4j</artifactId>
|
||||
<version>1.2.2</version>
|
||||
<version>1.3.0</version>
|
||||
|
||||
<name>GithubReleases4J</name>
|
||||
<description>Github Releases for Java</description>
|
||||
|
@ -27,6 +27,7 @@ public class GithubReleases4J {
|
||||
// Should not be the instance.
|
||||
}
|
||||
|
||||
public static String GITHUB_URL = "https://github.com";
|
||||
public static String GITHUB_API_URL = "https://api.github.com";
|
||||
public static SimpleDateFormat GH_TIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
|
||||
|
||||
@ -160,6 +161,62 @@ public class GithubReleases4J {
|
||||
return getLatestRelease(owner, repository, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get how many versions behind the current version's tag name.
|
||||
*
|
||||
* @param owner Repository's Owner
|
||||
* @param repository Repository's Name
|
||||
* @param token OAuth Access Token
|
||||
* <br> Necessary when this repository is private.
|
||||
* @param currentTagName Current Version's tag name.
|
||||
* @return NULL if not fetch releases, -1 if no match tag name.
|
||||
* @since 1.3.0
|
||||
*/
|
||||
public static @Nullable Integer getVersionBehind(@NotNull String owner, @NotNull String repository,
|
||||
@Nullable String token, @NotNull String currentTagName) {
|
||||
List<GithubRelease> releases = GithubReleases4J.listReleases(owner, repository, token);
|
||||
if (releases.isEmpty()) return null; // Could not fetch releases.
|
||||
|
||||
int i = 0;
|
||||
for (GithubRelease release : releases) {
|
||||
if (release.getTagName().equalsIgnoreCase(currentTagName)) {
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
if (i == releases.size()) return -1; // No match tag name;
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get how many versions behind the current version's tag name.
|
||||
*
|
||||
* @param owner Repository's Owner
|
||||
* @param repository Repository's Name
|
||||
* @param currentTagName Current Version's tag name.
|
||||
* @return NULL if not fetch releases, -1 if no match tag name.
|
||||
* @since 1.3.0
|
||||
*/
|
||||
public static @Nullable Integer getVersionBehind(@NotNull String owner, @NotNull String repository,
|
||||
@NotNull String currentTagName) {
|
||||
return getVersionBehind(owner, repository, null, currentTagName);
|
||||
}
|
||||
|
||||
public static @NotNull String getReleasesURL(@NotNull String owner, @NotNull String repository) {
|
||||
return buildURL("%s/%s/%s/releases", GITHUB_URL, owner, repository);
|
||||
}
|
||||
|
||||
public static @NotNull String getLatestReleaseURL(@NotNull String owner, @NotNull String repository) {
|
||||
return getReleasesURL(owner, repository) + "/latest";
|
||||
}
|
||||
|
||||
public static @NotNull String getReleaseURLByTag(@NotNull String owner, @NotNull String repository,
|
||||
@NotNull String releaseTagName) {
|
||||
return getReleasesURL(owner, repository) + "/tag/" + releaseTagName;
|
||||
}
|
||||
|
||||
private static String buildURL(@NotNull String url, Object... params) {
|
||||
return String.format(url, params);
|
||||
}
|
||||
|
22
src/test/java/GithubVersionTest.java
Normal file
22
src/test/java/GithubVersionTest.java
Normal file
@ -0,0 +1,22 @@
|
||||
import cc.carm.lib.githubreleases4j.GithubReleases4J;
|
||||
import org.junit.Test;
|
||||
|
||||
public class GithubVersionTest {
|
||||
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
|
||||
System.out.println(GithubReleases4J.getVersionBehind("CarmJos", "UltraDepository", "1.3.4"));
|
||||
|
||||
System.out.println(GithubReleases4J.getVersionBehind("CarmJos", "UltraDepository", "v1.2.0"));
|
||||
|
||||
System.out.println(GithubReleases4J.getVersionBehind("CarmJos", "UltraDepository", "TEST"));
|
||||
|
||||
System.out.println(GithubReleases4J.getVersionBehind("CarmJos", "NULL", "TEST"));
|
||||
|
||||
System.out.println("Download at " + GithubReleases4J.getReleaseURLByTag("CarmJos", "UltraDepository", "1.3.4"));
|
||||
System.out.println("Download at " + GithubReleases4J.getLatestReleaseURL("CarmJos", "UltraDepository"));
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user