Skip to content

Commit 5b7785d

Browse files
committed
1.2-SNAPSHOT
1 parent 9b963a0 commit 5b7785d

File tree

3 files changed

+70
-5
lines changed

3 files changed

+70
-5
lines changed

build.gradle

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ plugins {
88
}
99

1010
group = 'one.tranic'
11-
version = '1.1-SNAPSHOT'
11+
version = '1.2-SNAPSHOT'
1212

1313
repositories {
1414
maven {
@@ -24,8 +24,12 @@ repositories {
2424
url = "https://oss.sonatype.org/content/groups/public/"
2525
}
2626
maven {
27-
url = "https://repo.repsy.io/mvn/rdb/default"
27+
name = "jitpack"
28+
url = "https://jitpack.io"
29+
}
30+
maven {
2831
name = "tranic-repo"
32+
url = "https://repo.repsy.io/mvn/rdb/default"
2933
}
3034
}
3135

@@ -36,6 +40,7 @@ dependencies {
3640
implementation("org.apache.maven:maven-resolver-provider:3.9.9")
3741
implementation("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.22")
3842
implementation("org.apache.maven.resolver:maven-resolver-transport-http:1.9.22")
43+
implementation("com.github.Carleslc.Simple-YAML:Simple-Yaml:1.8.4")
3944
}
4045

4146
def targetJavaVersion = 17

src/main/java/one/tranic/mavenLoader/MavenLoader.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,27 @@
55
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
66
import com.velocitypowered.api.event.proxy.ProxyShutdownEvent;
77
import com.velocitypowered.api.plugin.Plugin;
8+
import com.velocitypowered.api.plugin.annotation.DataDirectory;
9+
import one.tranic.mavenLoader.plugins.Loader;
810
import org.slf4j.Logger;
911

12+
import java.nio.file.Path;
13+
1014
@Plugin(id = "maven-loader", name = "MavenLoader", version = BuildConstants.VERSION, url = "https://tranic.one", authors = {"404"})
1115
public class MavenLoader {
12-
1316
private final Metrics.Factory metricsFactory;
14-
private Logger logger;
17+
private final Logger logger;
1518
private Metrics metrics;
1619

1720
@Inject
18-
public MavenLoader(Logger logger, Metrics.Factory metricsFactory) {
21+
public MavenLoader(Logger logger, Metrics.Factory metricsFactory, @DataDirectory Path dataDirectory) {
1922
this.logger = logger;
2023
this.metricsFactory = metricsFactory;
24+
try {
25+
new Loader().scanJarFiles(dataDirectory.getParent());
26+
} catch (Exception e) {
27+
e.printStackTrace();
28+
}
2129
}
2230

2331
@Subscribe
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package one.tranic.mavenLoader.plugins;
2+
3+
import one.tranic.mavenloader.api.MavenLibraryResolver;
4+
import org.simpleyaml.configuration.file.YamlConfiguration;
5+
6+
import java.nio.file.DirectoryStream;
7+
import java.nio.file.Files;
8+
import java.nio.file.Path;
9+
import java.util.List;
10+
import java.util.jar.JarFile;
11+
import java.util.zip.ZipEntry;
12+
13+
public class Loader {
14+
public void scanJarFiles(Path directory) throws Exception {
15+
try (DirectoryStream<Path> stream = Files.newDirectoryStream(directory, "*.jar")) {
16+
for (Path entry : stream) {
17+
if (Files.isRegularFile(entry)) {
18+
checkForMavenYml(entry);
19+
}
20+
}
21+
}
22+
}
23+
24+
private void checkForMavenYml(Path jarPath) throws Exception {
25+
try (JarFile jarFile = new JarFile(jarPath.toFile())) {
26+
ZipEntry mavenYmlEntry = jarFile.getEntry("maven.yml");
27+
if (mavenYmlEntry != null && !mavenYmlEntry.isDirectory()) {
28+
parseMavenYml(jarFile, mavenYmlEntry);
29+
}
30+
}
31+
}
32+
33+
private void parseMavenYml(JarFile jarFile, ZipEntry entry) throws Exception {
34+
try (var inputStream = jarFile.getInputStream(entry)) {
35+
YamlConfiguration c = YamlConfiguration.loadConfiguration(inputStream);
36+
List<String> repository = c.getStringList("repository");
37+
List<String> dependency = c.getStringList("dependency");
38+
if (dependency.isEmpty()) return;
39+
MavenLibraryResolver resolver = new MavenLibraryResolver();
40+
if (!repository.isEmpty()) {
41+
int i = 0;
42+
for (String repo : repository) {
43+
resolver.addRepository(repo, "AutoRepository-" + i);
44+
i++;
45+
}
46+
}
47+
for (String dep : dependency) {
48+
resolver.addDependency(dep);
49+
}
50+
}
51+
}
52+
}

0 commit comments

Comments
 (0)