Skip to content
This repository was archived by the owner on Jun 7, 2022. It is now read-only.

Commit 9d58bdf

Browse files
derropGiantTreeLP
authored andcommitted
Fixed recursive loop of build processes when a build failed
1 parent 908c3d7 commit 9d58bdf

File tree

3 files changed

+98
-97
lines changed

3 files changed

+98
-97
lines changed

cloudnet-cord/cloudnet-setup/src/main/java/de/dytanic/cloudnet/setup/spigot/PaperBuilder.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public final class PaperBuilder {
3030
*
3131
* @param reader Read the answer from console
3232
*/
33-
public static void start(ConsoleReader reader, Path outputPath) {
33+
public static boolean start(ConsoleReader reader, Path outputPath) {
3434
try {
3535
System.out.println("Fetch Versions");
3636
URLConnection connection = new URL(apiProjectUrl).openConnection();
@@ -56,14 +56,15 @@ public static void start(ConsoleReader reader, Path outputPath) {
5656
String finalAnswer = name;
5757
if (Arrays.stream(paperMCProject.getVersions()).anyMatch(e -> e.equalsIgnoreCase(finalAnswer))) {
5858
answer = name;
59-
buildPaperVersion(answer, outputPath);
59+
return buildPaperVersion(answer, outputPath);
6060
} else if (Arrays.stream(paperMCProject.getVersions()).noneMatch(e -> e.equalsIgnoreCase(finalAnswer))) {
6161
System.out.println("This version does not exist!");
6262
}
6363
}
6464
} catch (Exception e) {
6565
e.printStackTrace();
6666
}
67+
return false;
6768
}
6869

6970
/**
@@ -73,7 +74,7 @@ public static void start(ConsoleReader reader, Path outputPath) {
7374
*
7475
* @throws Exception If a connection error or something
7576
*/
76-
private static void buildPaperVersion(String version, Path outputPath) throws Exception {
77+
private static boolean buildPaperVersion(String version, Path outputPath) throws Exception {
7778
System.out.println(String.format("Fetching build %s", version));
7879
URLConnection connection = new URL(String.format(API_PROJECT_VERSION_URL, version)).openConnection();
7980
connection.setRequestProperty("User-Agent",
@@ -94,6 +95,7 @@ private static void buildPaperVersion(String version, Path outputPath) throws Ex
9495
File paperclip = new File(buildFolder, "paperclip.jar");
9596
if (!paperclip.exists()) {
9697
runPaperClip(connection, buildFolder, paperclip, outputPath);
98+
return true;
9799
} else {
98100
File[] paperclips = buildFolder.listFiles(pathname -> pathname.getName().startsWith("paper"));
99101
if (Objects.requireNonNull(paperclips).length > 0) {
@@ -103,16 +105,18 @@ private static void buildPaperVersion(String version, Path outputPath) throws Ex
103105
Files.copy(new FileInputStream(Objects.requireNonNull(paperclips)[0]),
104106
outputPath,
105107
StandardCopyOption.REPLACE_EXISTING);
108+
return true;
106109
} catch (IOException e) {
107110
e.printStackTrace();
111+
return false;
108112
}
109113
} else {
110114
SpigotBuilder.deleteBuildFolder(buildFolder);
111115
runPaperClip(connection, buildFolder, paperclip, outputPath);
116+
return true;
112117
}
113118

114119
}
115-
116120
}
117121

118122
/**

cloudnet-cord/cloudnet-setup/src/main/java/de/dytanic/cloudnet/setup/spigot/SetupSpigotVersion.java

Lines changed: 79 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.nio.file.Paths;
1616
import java.nio.file.StandardCopyOption;
1717
import java.util.function.Consumer;
18+
import java.util.function.Predicate;
1819

1920
/**
2021
* Created by Tareko on 25.05.2017.
@@ -23,22 +24,21 @@ public class SetupSpigotVersion implements Consumer<ConsoleReader> {
2324

2425
private Path target;
2526

26-
private final Consumer<String> download = new Consumer<String>() {
27-
@Override
28-
public void accept(String url) {
29-
try {
30-
System.out.println("Downloading spigot.jar...");
31-
URLConnection connection = new URL(url).openConnection();
32-
connection.setRequestProperty("User-Agent",
33-
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
34-
connection.connect();
35-
try (InputStream inputStream = connection.getInputStream()) {
36-
Files.copy(inputStream, SetupSpigotVersion.this.getTarget(), StandardCopyOption.REPLACE_EXISTING);
37-
}
38-
System.out.println("Download was successfully completed!");
39-
} catch (Exception e) {
40-
e.printStackTrace();
27+
private final Predicate<String> download = url -> {
28+
try {
29+
System.out.println("Downloading spigot.jar...");
30+
URLConnection connection = new URL(url).openConnection();
31+
connection.setRequestProperty("User-Agent",
32+
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
33+
connection.connect();
34+
try (InputStream inputStream = connection.getInputStream()) {
35+
Files.copy(inputStream, SetupSpigotVersion.this.getTarget(), StandardCopyOption.REPLACE_EXISTING);
4136
}
37+
System.out.println("Download was successfully completed!");
38+
return true;
39+
} catch (Exception e) {
40+
e.printStackTrace();
41+
return false;
4242
}
4343
};
4444

@@ -51,13 +51,71 @@ public void accept(String url) {
5151
public void accept(ConsoleReader reader) {
5252
System.out.println("No spigot.jar has been found!");
5353

54-
System.out.println("Choose a minecraft server version [\"paper\", \"spigot\", \"buildtools\"]");
54+
String spigotType;
55+
do {
56+
System.out.println("Choose a minecraft server version [\"paper\", \"spigot\", \"buildtools\"]");
57+
spigotType = System.getProperty("spigot-type") != null ? System.getProperty("spigot-type") : this.askForServerType(reader);
58+
} while (!this.install(reader, spigotType));
59+
}
5560

56-
String answer = null;
61+
private boolean install(ConsoleReader reader, String spigotType) {
62+
switch (spigotType) {
63+
case "spigot":
64+
return this.installSpigot(reader);
65+
case "buildtools":
66+
return SpigotBuilder.start(reader, this.getTarget());
67+
case "paper":
68+
return PaperBuilder.start(reader, this.getTarget());
69+
}
70+
return false;
71+
}
5772

58-
if (System.getProperty("spigot-type") != null) {
59-
answer = System.getProperty("spigot-type");
73+
private boolean installSpigot(ConsoleReader reader) {
74+
System.out.println(
75+
"Choose a Spigot version [\"1.7.10\", \"1.8.8\", \"1.9.4\", \"1.10.2\", \"1.11.2\", \"1.12.2\", \"1.13\", \"1.13.1\", \"1.13.2\", \"1.14\", \"1.14.1\", \"1.14.2\", \"1.14.3\", \"1.14.4\"]");
76+
while (true) {
77+
try {
78+
switch (reader.readLine().toLowerCase()) {
79+
case "1.7.10":
80+
return this.download.test("https://cdn.getbukkit.org/spigot/spigot-1.7.10-SNAPSHOT-b1657.jar");
81+
case "1.8.8":
82+
return this.download.test("https://cdn.getbukkit.org/spigot/spigot-1.8.8-R0.1-SNAPSHOT-latest.jar");
83+
case "1.9.4":
84+
return this.download.test("https://cdn.getbukkit.org/spigot/spigot-1.9.4-R0.1-SNAPSHOT-latest.jar");
85+
case "1.10.2":
86+
return this.download.test("https://cdn.getbukkit.org/spigot/spigot-1.10.2-R0.1-SNAPSHOT-latest.jar");
87+
case "1.11.2":
88+
return this.download.test("https://cdn.getbukkit.org/spigot/spigot-1.11.2.jar");
89+
case "1.12.2":
90+
return this.download.test("https://cdn.getbukkit.org/spigot/spigot-1.12.2.jar");
91+
case "1.13":
92+
return this.download.test("https://cdn.getbukkit.org/spigot/spigot-1.13.jar");
93+
case "1.13.1":
94+
return this.download.test("https://cdn.getbukkit.org/spigot/spigot-1.13.1.jar");
95+
case "1.13.2":
96+
return this.download.test("https://cdn.getbukkit.org/spigot/spigot-1.13.2.jar");
97+
case "1.14":
98+
return this.download.test("https://cdn.getbukkit.org/spigot/spigot-1.14.jar");
99+
case "1.14.1":
100+
return this.download.test("https://cdn.getbukkit.org/spigot/spigot-1.14.1.jar");
101+
case "1.14.2":
102+
return this.download.test("https://cdn.getbukkit.org/spigot/spigot-1.14.2.jar");
103+
case "1.14.3":
104+
return this.download.test("https://cdn.getbukkit.org/spigot/spigot-1.14.3.jar");
105+
case "1.14.4":
106+
return this.download.test("https://cdn.getbukkit.org/spigot/spigot-1.14.4.jar");
107+
default:
108+
System.out.println("This version is not supported!");
109+
break;
110+
}
111+
} catch (IOException e) {
112+
e.printStackTrace();
113+
}
60114
}
115+
}
116+
117+
private String askForServerType(ConsoleReader reader) {
118+
String answer = null;
61119

62120
String input;
63121

@@ -83,73 +141,8 @@ public void accept(ConsoleReader reader) {
83141
ex.printStackTrace();
84142
}
85143
}
86-
if (System.getProperty("spigot-version") != null) {
87-
answer = System.getProperty("spigot-version");
88-
}
89-
switch (answer) {
90-
case "spigot":
91-
System.out.println(
92-
"Choose a Spigot version [\"1.7.10\", \"1.8.8\", \"1.9.4\", \"1.10.2\", \"1.11.2\", \"1.12.2\", \"1.13\", \"1.13.1\", \"1.13.2\", \"1.14\", \"1.14.1\", \"1.14.2\", \"1.14.3\", \"1.14.4\"]");
93-
while (true) {
94-
try {
95-
switch (reader.readLine().toLowerCase()) {
96-
case "1.7.10":
97-
download.accept("https://cdn.getbukkit.org/spigot/spigot-1.7.10-SNAPSHOT-b1657.jar");
98-
return;
99-
case "1.8.8":
100-
download.accept("https://cdn.getbukkit.org/spigot/spigot-1.8.8-R0.1-SNAPSHOT-latest.jar");
101-
return;
102-
case "1.9.4":
103-
download.accept("https://cdn.getbukkit.org/spigot/spigot-1.9.4-R0.1-SNAPSHOT-latest.jar");
104-
return;
105-
case "1.10.2":
106-
download.accept("https://cdn.getbukkit.org/spigot/spigot-1.10.2-R0.1-SNAPSHOT-latest.jar");
107-
return;
108-
case "1.11.2":
109-
download.accept("https://cdn.getbukkit.org/spigot/spigot-1.11.2.jar");
110-
return;
111-
case "1.12.2":
112-
download.accept("https://cdn.getbukkit.org/spigot/spigot-1.12.2.jar");
113-
return;
114-
case "1.13":
115-
download.accept("https://cdn.getbukkit.org/spigot/spigot-1.13.jar");
116-
return;
117-
case "1.13.1":
118-
download.accept("https://cdn.getbukkit.org/spigot/spigot-1.13.1.jar");
119-
return;
120-
case "1.13.2":
121-
download.accept("https://cdn.getbukkit.org/spigot/spigot-1.13.2.jar");
122-
return;
123-
case "1.14":
124-
download.accept("https://cdn.getbukkit.org/spigot/spigot-1.14.jar");
125-
return;
126-
case "1.14.1":
127-
download.accept("https://cdn.getbukkit.org/spigot/spigot-1.14.1.jar");
128-
return;
129-
case "1.14.2":
130-
download.accept("https://cdn.getbukkit.org/spigot/spigot-1.14.2.jar");
131-
return;
132-
case "1.14.3":
133-
download.accept("https://cdn.getbukkit.org/spigot/spigot-1.14.3.jar");
134-
return;
135-
case "1.14.4":
136-
download.accept("https://cdn.getbukkit.org/spigot/spigot-1.14.4.jar");
137-
return;
138-
default:
139-
System.out.println("This version is not supported!");
140-
break;
141-
}
142-
} catch (IOException e) {
143-
e.printStackTrace();
144-
}
145-
}
146-
case "buildtools":
147-
SpigotBuilder.start(reader, this.getTarget());
148-
break;
149-
case "paper":
150-
PaperBuilder.start(reader, this.getTarget());
151-
break;
152-
}
144+
145+
return answer;
153146
}
154147

155148
public Path getTarget() {

cloudnet-cord/cloudnet-setup/src/main/java/de/dytanic/cloudnet/setup/spigot/SpigotBuilder.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public final class SpigotBuilder {
2828
*
2929
* @param reader to read the answer
3030
*/
31-
public static void start(final ConsoleReader reader, Path outputPath) {
31+
public static boolean start(final ConsoleReader reader, Path outputPath) {
3232
System.out.println("Fetching Spigot versions");
3333
List<String> versions = loadVersions();
3434
System.out.println("Available Spigot versions:");
@@ -47,11 +47,12 @@ public static void start(final ConsoleReader reader, Path outputPath) {
4747
String finalAnswer = name;
4848
if (versions.stream().anyMatch(e -> e.equalsIgnoreCase(finalAnswer))) {
4949
answer = name;
50-
buildSpigot(finalAnswer, outputPath);
50+
return buildSpigot(finalAnswer, outputPath);
5151
} else if (versions.stream().noneMatch(e -> e.equalsIgnoreCase(finalAnswer))) {
5252
System.out.println("This version does not exist!");
5353
}
5454
}
55+
return false;
5556
}
5657

5758
/**
@@ -83,7 +84,7 @@ private static LinkedList<String> loadVersions() {
8384
*
8485
* @param version the version of spigot
8586
*/
86-
private static void buildSpigot(final String version, Path outputPath) {
87+
private static boolean buildSpigot(final String version, Path outputPath) {
8788
File builder = new File("local/builder/spigot");
8889
File buildFolder = new File(builder, version);
8990
try {
@@ -93,7 +94,7 @@ private static void buildSpigot(final String version, Path outputPath) {
9394
}
9495
File buildTools = new File(buildFolder, "buildtools.jar");
9596
if (!buildTools.exists()) {
96-
runBuildTools(version, buildFolder, buildTools, outputPath);
97+
return runBuildTools(version, buildFolder, buildTools, outputPath);
9798
} else {
9899
if (Objects.requireNonNull(buildFolder.listFiles(pathname -> pathname.getName().startsWith("spigot-"))).length > 0) {
99100
System.out.println("Skipping build");
@@ -103,11 +104,13 @@ private static void buildSpigot(final String version, Path outputPath) {
103104
.startsWith("spigot-")))[0]),
104105
outputPath,
105106
StandardCopyOption.REPLACE_EXISTING);
107+
return true;
106108
} catch (IOException e) {
107109
e.printStackTrace();
110+
return false;
108111
}
109112
} else {
110-
runBuildTools(version, buildFolder, buildTools, outputPath);
113+
return runBuildTools(version, buildFolder, buildTools, outputPath);
111114
}
112115
}
113116

@@ -120,7 +123,7 @@ private static void buildSpigot(final String version, Path outputPath) {
120123
* @param buildFolder the folder in there are build
121124
* @param buildTools the path of the build tools
122125
*/
123-
private static void runBuildTools(String version, File buildFolder, File buildTools, Path outputPath) {
126+
private static boolean runBuildTools(String version, File buildFolder, File buildTools, Path outputPath) {
124127
try {
125128
long startTime = System.currentTimeMillis();
126129
Files.createDirectories(buildFolder.toPath());
@@ -145,13 +148,14 @@ private static void runBuildTools(String version, File buildFolder, File buildTo
145148
long minutes = ((endTime - startTime) / 1000) / 60;
146149
long seconds = ((endTime - startTime) / 1000) % 60;
147150
System.out.printf("Total Build Time %dMin %dSec\n", minutes, seconds);
151+
return true;
148152
} else {
149153
deleteBuildFolder(buildFolder);
150-
buildSpigot(version, outputPath);
151154
}
152155
} catch (Exception e) {
153156
e.printStackTrace();
154157
}
158+
return false;
155159
}
156160

157161
/**

0 commit comments

Comments
 (0)