Skip to content

Commit 05aaa57

Browse files
committed
Added latest tag option
1 parent a71f52b commit 05aaa57

5 files changed

Lines changed: 82 additions & 3 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
.gradle/
55
out/
66
build/
7-
/config.json
7+
/config.json
8+
artifacts/

build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ repositories {
1515
}
1616

1717
dependencies {
18-
implementation 'org.springframework.boot:spring-boot-starter-web'
18+
implementation 'org.springframework.boot:spring-boot-starter-web:2.5.5'
1919
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.6'
2020
compile group: 'commons-io', name: 'commons-io', version: '2.7'
2121
compile 'com.jcraft:jsch:0.1.55'
22+
implementation 'org.kohsuke:github-api:1.133'
2223
}
2324

2425
jar {

src/main/java/me/TechsCode/ReleaseServer/WebRequestsHandler.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package me.TechsCode.ReleaseServer;
22

3+
import com.sun.javafx.scene.text.HitInfo;
4+
import me.TechsCode.ReleaseServer.github.GitHubUtil;
35
import org.springframework.core.io.Resource;
46
import org.springframework.core.io.UrlResource;
57
import org.springframework.http.HttpHeaders;
@@ -12,6 +14,7 @@
1214
import java.net.MalformedURLException;
1315
import java.net.URLEncoder;
1416
import java.util.List;
17+
import java.util.Objects;
1518
import java.util.Optional;
1619
import java.util.stream.Collectors;
1720

@@ -41,8 +44,17 @@ public Object download(@RequestParam(value = "token", required = false) String t
4144
return "Could not find any artifact for project '"+project+"'";
4245
}
4346

47+
if(tag.equals("latest")){
48+
String ghToken = "";
49+
if(artifactsOfProject.stream().findFirst().get().getRelease().getProject().getGithubToken().isPresent())
50+
ghToken = artifactsOfProject.stream().findFirst().get().getRelease().getProject().getGithubToken().get();
51+
String repo = artifactsOfProject.stream().findFirst().get().getRelease().getProject().getGithubRepository();
52+
tag = Objects.requireNonNull(GitHubUtil.getLatestRelease(ghToken, repo)).getRelease().getTagName();
53+
}
54+
55+
String finalTag = tag;
4456
Optional<Artifact> artifact = artifactsOfProject.stream()
45-
.filter(x -> x.getReleaseTag().equals(tag)).findFirst();
57+
.filter(x -> x.getReleaseTag().equals(finalTag)).findFirst();
4658

4759
if(artifact.isPresent()){
4860
if(artifact.get().getAssets().length == 0){
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package me.TechsCode.ReleaseServer.github;
2+
3+
import org.kohsuke.github.*;
4+
5+
import java.io.IOException;
6+
import java.util.Objects;
7+
8+
public class GitHubUtil {
9+
10+
private static GitHub github = null;
11+
12+
public static GithubRelease getLatestRelease(String token, String repo) {
13+
try {
14+
GHRepository ghrepo = Objects.requireNonNull(getGithub(token)).getRepository(repo);
15+
GHRelease release = ghrepo.getLatestRelease();
16+
17+
if(release == null) return null;
18+
19+
return new GithubRelease(release);
20+
} catch (IOException e) {
21+
e.printStackTrace();
22+
return null;
23+
}
24+
}
25+
26+
private static GitHub getGithub(String token) {
27+
try {
28+
if(github == null) github = new GitHubBuilder().withOAuthToken(token).build();
29+
return github;
30+
} catch (IOException e) {
31+
e.printStackTrace();
32+
return null;
33+
}
34+
}
35+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package me.TechsCode.ReleaseServer.github;
2+
3+
import org.kohsuke.github.GHAsset;
4+
import org.kohsuke.github.GHRelease;
5+
6+
import java.io.File;
7+
import java.io.IOException;
8+
import java.util.List;
9+
10+
public class GithubRelease {
11+
12+
private final GHRelease release;
13+
private GHAsset asset = null;
14+
15+
public GithubRelease(GHRelease release) throws IOException {
16+
List<GHAsset> releaseAsset = release.listAssets().toList();
17+
if(releaseAsset.size() > 0) {
18+
this.asset = releaseAsset.get(0);
19+
}
20+
this.release = release;
21+
}
22+
23+
public GHRelease getRelease() {
24+
return release;
25+
}
26+
27+
public GHAsset getAsset() {
28+
return asset;
29+
}
30+
}

0 commit comments

Comments
 (0)