type, Class clazz) {
- this.groovierModule.bindProvider(type, clazz);
- }
+ @Override
+ public > void bindProvider(Class type, Class clazz) {
+ this.groovierModule.bindProvider(type, clazz);
+ }
- @Override
- public Injector getBaseInjector() {
- return Optional.ofNullable(injector).orElseThrow(() -> new IllegalStateException("groovier not initialized"));
- }
+ @Override
+ public void installModule(Module module) {
+ this.groovierModule.installModule(module);
+ }
- @Override
- public ServiceInjector getServiceInjector() {
- return getBaseInjector().getInstance(ServiceInjector.class);
- }
+ @Override
+ public Injector getBaseInjector() {
+ return Optional.ofNullable(injector).orElseThrow(() -> new IllegalStateException("groovier not initialized"));
+ }
- @Override
- public ArgumentParser getArgumentParser() {
- return getBaseInjector().getInstance(ArgumentParser.class);
- }
+ @Override
+ public ServiceInjector getServiceInjector() {
+ return getBaseInjector().getInstance(ServiceInjector.class);
+ }
- public void copyFromJar(String source, final Path target) throws URISyntaxException, IOException {
+ @Override
+ public ArgumentParser getArgumentParser() {
+ return getBaseInjector().getInstance(ArgumentParser.class);
+ }
- URL url = getClass().getResource("");
+ public void copyFromJar(String source, final Path target) throws URISyntaxException, IOException {
- if (url == null) {
- throw new IllegalStateException("can't find resource inside jar");
- }
-
- URI resource = url.toURI();
+ URL url = getClass().getResource("");
+
+ if (url == null) {
+ throw new IllegalStateException("can't find resource inside jar");
+ }
+
+ URI resource = url.toURI();
- try (FileSystem fileSystem = FileSystems.newFileSystem(
- resource,
- Collections.emptyMap()
- )) {
+ try (FileSystem fileSystem = FileSystems.newFileSystem(
+ resource,
+ Collections.emptyMap()
+ )) {
- final Path jarPath = fileSystem.getPath(source);
+ final Path jarPath = fileSystem.getPath(source);
- Files.walkFileTree(jarPath, new SimpleFileVisitor<>() {
+ Files.walkFileTree(jarPath, new SimpleFileVisitor<>() {
- @Override
- public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
- Path currentTarget = target.resolve(jarPath.relativize(dir).toString());
- if (Files.notExists(currentTarget)) Files.createDirectories(currentTarget);
- return FileVisitResult.CONTINUE;
- }
+ @Override
+ public @NotNull FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
+ Path currentTarget = target.resolve(jarPath.relativize(dir).toString());
+ if (Files.notExists(currentTarget)) Files.createDirectories(currentTarget);
+ return FileVisitResult.CONTINUE;
+ }
- @Override
- public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
- var targetPath = target.resolve(jarPath.relativize(file).toString());
- if (Files.notExists(targetPath)) Files.copy(file, targetPath, StandardCopyOption.REPLACE_EXISTING);
- return FileVisitResult.CONTINUE;
- }
+ @Override
+ public @NotNull FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+ var targetPath = target.resolve(jarPath.relativize(file).toString());
+ if (Files.notExists(targetPath)) Files.copy(file, targetPath, StandardCopyOption.REPLACE_EXISTING);
+ return FileVisitResult.CONTINUE;
+ }
+
+ });
+
+ }
- });
- }
-
-
- }
+ }
}
diff --git a/groovier-plugin/src/main/groovy/com/ericlam/mc/groovier/GroovierModule.groovy b/groovier-plugin/src/main/groovy/com/ericlam/mc/groovier/GroovierModule.groovy
index 4921f6e..2b9687f 100644
--- a/groovier-plugin/src/main/groovy/com/ericlam/mc/groovier/GroovierModule.groovy
+++ b/groovier-plugin/src/main/groovy/com/ericlam/mc/groovier/GroovierModule.groovy
@@ -1,6 +1,7 @@
package com.ericlam.mc.groovier
import com.google.inject.AbstractModule
+import com.google.inject.Module
import com.google.inject.Scopes
import com.google.inject.multibindings.Multibinder
@@ -13,7 +14,9 @@ class GroovierModule extends AbstractModule {
private final Map registerMap = new HashMap<>()
private final Map classMap = new HashMap<>()
- private final Map>> providerMap = new HashMap<>();
+ private final Map>> providerMap = new HashMap<>()
+
+ private final Set modules = new HashSet<>()
private final GroovyClassLoader classLoader = new GroovyClassLoader(getClass().getClassLoader())
@@ -34,6 +37,7 @@ class GroovierModule extends AbstractModule {
registerMap.forEach((type, obj) -> bind(type).toInstance(obj))
classMap.forEach((type, clazz) -> bind(type).to(clazz).in(Scopes.SINGLETON))
providerMap.forEach((type, provider) -> bind(type).toProvider(provider).in(Scopes.SINGLETON))
+ modules.forEach(this::install)
}
@@ -61,4 +65,8 @@ class GroovierModule extends AbstractModule {
this.registerMap.put(validator, ins)
}
+ def installModule(Module module) {
+ this.modules.add(module)
+ }
+
}
diff --git a/groovier-scripts/pom.xml b/groovier-scripts/pom.xml
index ab5e663..2e9d239 100644
--- a/groovier-scripts/pom.xml
+++ b/groovier-scripts/pom.xml
@@ -5,7 +5,7 @@
groovier
org.groovier
- 0.0.4
+ 0.0.51-SNAPSHOT
4.0.0
diff --git a/pom.xml b/pom.xml
index c96463b..737f0e9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
org.groovier
groovier
- 0.0.4
+ 0.0.51-SNAPSHOT
pom
Groovier
@@ -260,7 +260,7 @@
org.junit.jupiter
junit-jupiter-engine
- 5.3.1
+ 5.11.4
test