Skip to content

Commit 299e6e4

Browse files
committed
return of run configs
1 parent faa6d43 commit 299e6e4

File tree

13 files changed

+225
-203
lines changed

13 files changed

+225
-203
lines changed

build.gradle.kts

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ repositories {
1919
val mc by minecraft.creating {
2020
version = "1.21.5"
2121
distribution = Distribution.CLIENT
22+
23+
runs {
24+
register("client") {
25+
client()
26+
}
27+
}
2228
}
2329

2430
dependencies {
@@ -31,29 +37,6 @@ dependencies {
3137
cichlidRuntime(cichlid.runtime("0.3.2"))
3238
}
3339

34-
cichlid {
35-
runs {
36-
// register("client") {
37-
// version = mcVer
38-
// }
39-
// register("client 1.21.4") {
40-
// version = "1.21.4"
41-
// template = "client"
42-
// }
43-
44-
// register("serverButCooler") {
45-
// template = "server"
46-
// programArgs.get().remove("nogui")
47-
// jvmArg("-Dmixin.debug.export=true")
48-
// }
49-
//
50-
// configureEach {
51-
// version = minecraftVersion
52-
// jvmArg("-Dmixin.debug.export=true")
53-
// }
54-
}
55-
}
56-
5740
tasks.register("resolveCompileSources") {
5841
val view = configurations.compileClasspath.get().incoming.artifactView {
5942
componentFilter {
Lines changed: 10 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
package fish.cichlidmc.cichlid_gradle.cache.storage;
22

3+
import fish.cichlidmc.cichlid_gradle.run.RunConfiguration;
34
import fish.cichlidmc.cichlid_gradle.run.RunTemplate;
45
import fish.cichlidmc.tinyjson.TinyJson;
56
import fish.cichlidmc.tinyjson.value.JsonValue;
67

78
import java.io.IOException;
89
import java.nio.file.Files;
910
import java.nio.file.Path;
10-
import java.util.HashMap;
11-
import java.util.Map;
12-
import java.util.stream.Stream;
1311

1412
public class RunTemplateStorage {
1513
private final Path root;
@@ -18,43 +16,19 @@ public class RunTemplateStorage {
1816
this.root = root;
1917
}
2018

21-
public Map<String, RunTemplate> getTemplates(String version) {
22-
Path dir = this.dir(version);
23-
if (!Files.exists(dir))
24-
return Map.of();
25-
26-
try (Stream<Path> stream = Files.list(dir)) {
27-
Map<String, RunTemplate> map = new HashMap<>();
28-
stream.forEach(path -> {
29-
String name = extractName(path);
30-
RunTemplate config = readRun(path);
31-
map.put(name, config);
32-
});
33-
return map;
34-
} catch (IOException e) {
35-
throw new RuntimeException(e);
19+
public RunTemplate getOrThrow(RunConfiguration.Type type) {
20+
Path path = this.root.resolve(type.name + ".json");
21+
if (!Files.exists(path)) {
22+
throw new IllegalStateException("RunTemplate for " + type + " is missing");
3623
}
37-
}
38-
39-
public void writeRun(String version, String name, RunTemplate run) throws IOException {
40-
Path file = this.dir(version).resolve(name + ".json");
41-
Files.createDirectories(file.getParent());
42-
Files.writeString(file, run.encode().toString());
43-
}
4424

45-
private Path dir(String version) {
46-
return this.root.resolve(version);
47-
}
48-
49-
private RunTemplate readRun(Path file) {
50-
JsonValue json = TinyJson.parseOrThrow(file);
25+
JsonValue json = TinyJson.parseOrThrow(path);
5126
return RunTemplate.parse(json);
5227
}
5328

54-
private static String extractName(Path path) {
55-
String fileName = path.getFileName().toString();
56-
int dot = fileName.indexOf(".");
57-
return dot == -1 ? fileName : fileName.substring(0, dot);
29+
public void writeTemplate(String name, RunTemplate run) throws IOException {
30+
Path file = this.root.resolve(name + ".json");
31+
Files.createDirectories(file.getParent());
32+
Files.writeString(file, run.encode().toString());
5833
}
59-
6034
}

plugin/src/main/java/fish/cichlidmc/cichlid_gradle/cache/task/impl/GenerateClientRunTemplateTask.java

Lines changed: 0 additions & 27 deletions
This file was deleted.

plugin/src/main/java/fish/cichlidmc/cichlid_gradle/cache/task/impl/GenerateServerRunTemplateTask.java

Lines changed: 0 additions & 44 deletions
This file was deleted.

plugin/src/main/java/fish/cichlidmc/cichlid_gradle/cache/task/impl/SetupTask.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import fish.cichlidmc.cichlid_gradle.cache.storage.VersionStorage;
44
import fish.cichlidmc.cichlid_gradle.cache.task.CacheTask;
55
import fish.cichlidmc.cichlid_gradle.cache.task.CacheTaskEnvironment;
6+
import fish.cichlidmc.cichlid_gradle.run.RunTemplate;
7+
import fish.cichlidmc.cichlid_gradle.run.RunTemplateGenerator;
68
import fish.cichlidmc.cichlid_gradle.util.Distribution;
79
import fish.cichlidmc.cichlid_gradle.util.io.DownloadBatch;
810
import fish.cichlidmc.cichlid_gradle.util.io.FileUtils;
@@ -40,7 +42,6 @@ public SetupTask(CacheTaskEnvironment env) {
4042
@Override
4143
protected String run() throws IOException {
4244
if (this.env.dist == Distribution.CLIENT) {
43-
// this.context.submit(new GenerateClientRunTemplateTask(this.context, this.storage.runs, this.version));
4445
if (ExtractNativesTask.shouldRun(this.env.version)) {
4546
this.env.submit(ExtractNativesTask::new);
4647
}
@@ -91,10 +92,14 @@ protected String run() throws IOException {
9192
Files.writeString(logFile, String.join("\n", log));
9293
Files.delete(tempJar);
9394

94-
if (this.env.dist == Distribution.SERVER) {
95-
// do this after remapping, so the real jar is present
96-
// this.context.submit(new GenerateServerRunTemplateTask(this.context, this.storage));
97-
}
95+
// do this after remapping, so the real server jar is present
96+
RunTemplate template = switch (this.env.dist) {
97+
case SERVER -> RunTemplateGenerator.generateServer(this.env.cache, this.env.version);
98+
case CLIENT -> RunTemplateGenerator.generateClient(this.env.version);
99+
case MERGED -> throw new IllegalStateException("Dist is merged?");
100+
};
101+
102+
storage.runs.writeTemplate(this.env.dist.name, template);
98103

99104
return null;
100105
}

plugin/src/main/java/fish/cichlidmc/cichlid_gradle/extension/CichlidExtension.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
package fish.cichlidmc.cichlid_gradle.extension;
22

3-
import fish.cichlidmc.cichlid_gradle.run.RunConfiguration;
4-
import org.gradle.api.NamedDomainObjectContainer;
53
import org.gradle.api.Project;
64

75
public interface CichlidExtension {
8-
NamedDomainObjectContainer<RunConfiguration> getRuns();
9-
106
static void setup(Project project) {
117
project.getExtensions().create(CichlidExtension.class, "cichlid", CichlidExtensionImpl.class);
128
}

plugin/src/main/java/fish/cichlidmc/cichlid_gradle/extension/def/MinecraftDefinition.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package fish.cichlidmc.cichlid_gradle.extension.def;
22

3+
import fish.cichlidmc.cichlid_gradle.run.RunConfiguration;
34
import fish.cichlidmc.cichlid_gradle.util.Distribution;
45
import org.gradle.api.Named;
56
import org.gradle.api.NamedDomainObjectContainer;
@@ -15,6 +16,7 @@ public interface MinecraftDefinition extends Named {
1516
Property<Distribution> getDistribution();
1617
Provider<ExternalModuleDependency> getDependency();
1718
Transformers getTransformers();
19+
NamedDomainObjectContainer<? extends RunConfiguration> getRuns();
1820

1921
interface Transformers {
2022
DependencyScopeConfiguration getMod();

plugin/src/main/java/fish/cichlidmc/cichlid_gradle/extension/def/MinecraftDefinitionImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package fish.cichlidmc.cichlid_gradle.extension.def;
22

33
import fish.cichlidmc.cichlid_gradle.cache.CichlidCache;
4+
import fish.cichlidmc.cichlid_gradle.run.RunConfiguration;
5+
import fish.cichlidmc.cichlid_gradle.run.RunConfigurationImpl;
46
import fish.cichlidmc.cichlid_gradle.util.Distribution;
57
import fish.cichlidmc.cichlid_gradle.util.Utils;
68
import fish.cichlidmc.cichlid_gradle.util.hash.Encoding;
79
import fish.cichlidmc.cichlid_gradle.util.hash.HashAlgorithm;
810
import org.gradle.api.InvalidUserDataException;
11+
import org.gradle.api.NamedDomainObjectContainer;
912
import org.gradle.api.Project;
1013
import org.gradle.api.artifacts.ExternalModuleDependency;
1114
import org.gradle.api.artifacts.dsl.DependencyFactory;
@@ -26,6 +29,7 @@ public final class MinecraftDefinitionImpl implements MinecraftDefinition {
2629

2730
private final Property<String> version;
2831
private final Property<Distribution> distribution;
32+
private final NamedDomainObjectContainer<RunConfigurationImpl> runs;
2933
private final TransformersImpl transformers;
3034

3135
private final Provider<ExternalModuleDependency> dependency;
@@ -47,6 +51,8 @@ public MinecraftDefinitionImpl(String name, Project project) {
4751
this.distribution = objects.property(Distribution.class).convention(Distribution.MERGED);
4852
this.distribution.finalizeValueOnRead();
4953

54+
this.runs = objects.domainObjectContainer(RunConfigurationImpl.class, RunConfigurationImpl.factory(project));
55+
5056
this.transformers = TransformersImpl.of(name, project.getConfigurations());
5157

5258
DependencyFactory depFactory = project.getDependencyFactory();
@@ -80,6 +86,11 @@ public TransformersImpl getTransformers() {
8086
return this.transformers;
8187
}
8288

89+
@Override
90+
public NamedDomainObjectContainer<? extends RunConfiguration> getRuns() {
91+
return this.runs;
92+
}
93+
8394
public String version() {
8495
if (this.version.isPresent()) {
8596
return this.version.get();
Lines changed: 39 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,51 @@
11
package fish.cichlidmc.cichlid_gradle.run;
22

3-
import javax.inject.Inject;
4-
3+
import fish.cichlidmc.cichlid_gradle.util.Distribution;
54
import fish.cichlidmc.cichlid_gradle.util.ListPatch;
65
import org.gradle.api.Named;
6+
import org.gradle.api.file.DirectoryProperty;
77
import org.gradle.api.provider.Property;
88
import org.gradle.api.tasks.SourceSet;
99

10-
public abstract class RunConfiguration implements Named {
11-
public abstract Property<String> getVersion();
12-
public abstract Property<String> getTemplate();
13-
public abstract Property<String> getMainClass();
14-
public abstract Property<String> getRunDir();
15-
public abstract Property<String> getSourceSet();
16-
public abstract Property<ListPatch<String>> getProgramArgs();
17-
public abstract Property<ListPatch<String>> getJvmArgs();
18-
19-
@Inject // inject name
20-
public RunConfiguration() {
21-
this.getRunDir().convention("run");
22-
this.getSourceSet().convention("main");
23-
this.getProgramArgs().convention(new ListPatch<>());
24-
this.getJvmArgs().convention(new ListPatch<>());
25-
}
10+
import java.util.Locale;
2611

27-
public void jvmArg(String arg) {
28-
this.getJvmArgs().get().add(arg);
29-
}
12+
public interface RunConfiguration extends Named {
13+
Property<Type> getType();
14+
Property<String> getMainClass();
15+
DirectoryProperty getRunDir();
16+
Property<String> getSourceSet();
17+
Property<ListPatch<String>> getProgramArgs();
18+
Property<ListPatch<String>> getJvmArgs();
3019

31-
public void programArg(String arg) {
32-
this.getProgramArgs().get().add(arg);
33-
}
20+
void client();
21+
22+
void server();
23+
24+
void jvmArg(String arg);
25+
26+
void programArg(String arg);
27+
28+
void sourceSet(SourceSet sourceSet);
29+
30+
enum Type {
31+
CLIENT(Distribution.CLIENT),
32+
SERVER(Distribution.SERVER);
33+
34+
public final String name;
35+
public final Distribution asDist;
36+
37+
Type(Distribution asDist) {
38+
this.name = this.name().toLowerCase(Locale.ROOT);
39+
this.asDist = asDist;
40+
}
41+
42+
public boolean isCompatibleWith(Distribution dist) {
43+
return this.asDist == dist || dist == Distribution.MERGED;
44+
}
3445

35-
public void sourceSet(SourceSet sourceSet) {
36-
this.getSourceSet().set(sourceSet.getName());
46+
@Override
47+
public String toString() {
48+
return this.name;
49+
}
3750
}
3851
}

0 commit comments

Comments
 (0)