Add ability to specify additional tiny remapper options in remapJar (#292)
* Add ability to specify additional tiny remapper options in remapJar * Imports go brr * Fix checkstyle Co-authored-by: modmuss50 <modmuss50@gmail.com>
This commit is contained in:
		
							parent
							
								
									e20993daf8
								
							
						
					
					
						commit
						b0860c36d6
					
				
					 2 changed files with 28 additions and 0 deletions
				
			
		|  | @ -29,8 +29,11 @@ import java.io.FileNotFoundException; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| import java.nio.file.Files; | import java.nio.file.Files; | ||||||
| import java.nio.file.Path; | import java.nio.file.Path; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.List; | ||||||
| 
 | 
 | ||||||
| import com.google.common.base.Preconditions; | import com.google.common.base.Preconditions; | ||||||
|  | import org.gradle.api.Action; | ||||||
| import org.gradle.api.Project; | import org.gradle.api.Project; | ||||||
| import org.gradle.api.file.FileCollection; | import org.gradle.api.file.FileCollection; | ||||||
| import org.gradle.api.file.RegularFileProperty; | import org.gradle.api.file.RegularFileProperty; | ||||||
|  | @ -59,6 +62,7 @@ public class RemapJarTask extends Jar { | ||||||
| 	private final RegularFileProperty input; | 	private final RegularFileProperty input; | ||||||
| 	private final Property<Boolean> addNestedDependencies; | 	private final Property<Boolean> addNestedDependencies; | ||||||
| 	private final Property<Boolean> remapAccessWidener; | 	private final Property<Boolean> remapAccessWidener; | ||||||
|  | 	private final List<Action<TinyRemapper.Builder>> remapOptions = new ArrayList<>(); | ||||||
| 	public JarRemapper jarRemapper; | 	public JarRemapper jarRemapper; | ||||||
| 	private FileCollection classpath; | 	private FileCollection classpath; | ||||||
| 
 | 
 | ||||||
|  | @ -107,6 +111,11 @@ public class RemapJarTask extends Jar { | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | 		// Apply any requested options to tiny remapper | ||||||
|  | 		for (Action<TinyRemapper.Builder> remapOption : this.remapOptions) { | ||||||
|  | 			remapOption.execute(remapperBuilder); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
| 		project.getLogger().lifecycle(":remapping " + input.getFileName()); | 		project.getLogger().lifecycle(":remapping " + input.getFileName()); | ||||||
| 
 | 
 | ||||||
| 		StringBuilder rc = new StringBuilder("Remap classpath: "); | 		StringBuilder rc = new StringBuilder("Remap classpath: "); | ||||||
|  | @ -181,6 +190,9 @@ public class RemapJarTask extends Jar { | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | 		// Add remap options to the jar remapper | ||||||
|  | 		jarRemapper.addOptions(this.remapOptions); | ||||||
|  | 
 | ||||||
| 		jarRemapper.scheduleRemap(input, output) | 		jarRemapper.scheduleRemap(input, output) | ||||||
| 				.supplyAccessWidener((remapData, remapper) -> { | 				.supplyAccessWidener((remapData, remapper) -> { | ||||||
| 					if (getRemapAccessWidener().getOrElse(false) && extension.accessWidener != null) { | 					if (getRemapAccessWidener().getOrElse(false) && extension.accessWidener != null) { | ||||||
|  | @ -251,6 +263,10 @@ public class RemapJarTask extends Jar { | ||||||
| 		return remapAccessWidener; | 		return remapAccessWidener; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	public void remapOptions(Action<TinyRemapper.Builder> action) { | ||||||
|  | 		this.remapOptions.add(action); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	public RemapJarTask classpath(FileCollection collection) { | 	public RemapJarTask classpath(FileCollection collection) { | ||||||
| 		if (this.classpath == null) { | 		if (this.classpath == null) { | ||||||
| 			this.classpath = collection; | 			this.classpath = collection; | ||||||
|  |  | ||||||
|  | @ -34,6 +34,7 @@ import java.util.Set; | ||||||
| import java.util.function.BiConsumer; | import java.util.function.BiConsumer; | ||||||
| import java.util.function.BiFunction; | import java.util.function.BiFunction; | ||||||
| 
 | 
 | ||||||
|  | import org.gradle.api.Action; | ||||||
| import org.objectweb.asm.commons.Remapper; | import org.objectweb.asm.commons.Remapper; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.stitch.util.Pair; | import net.fabricmc.stitch.util.Pair; | ||||||
|  | @ -46,6 +47,7 @@ public class JarRemapper { | ||||||
| 	private final List<IMappingProvider> mappingProviders = new ArrayList<>(); | 	private final List<IMappingProvider> mappingProviders = new ArrayList<>(); | ||||||
| 	private final Set<Path> classPath = new HashSet<>(); | 	private final Set<Path> classPath = new HashSet<>(); | ||||||
| 	private final List<RemapData> remapData = new ArrayList<>(); | 	private final List<RemapData> remapData = new ArrayList<>(); | ||||||
|  | 	private List<Action<TinyRemapper.Builder>> remapOptions; | ||||||
| 
 | 
 | ||||||
| 	public void addMappings(IMappingProvider mappingProvider) { | 	public void addMappings(IMappingProvider mappingProvider) { | ||||||
| 		mappingProviders.add(mappingProvider); | 		mappingProviders.add(mappingProvider); | ||||||
|  | @ -65,6 +67,12 @@ public class JarRemapper { | ||||||
| 		TinyRemapper.Builder remapperBuilder = TinyRemapper.newRemapper(); | 		TinyRemapper.Builder remapperBuilder = TinyRemapper.newRemapper(); | ||||||
| 		mappingProviders.forEach(remapperBuilder::withMappings); | 		mappingProviders.forEach(remapperBuilder::withMappings); | ||||||
| 
 | 
 | ||||||
|  | 		if (remapOptions != null) { | ||||||
|  | 			for (Action<TinyRemapper.Builder> remapOption : remapOptions) { | ||||||
|  | 				remapOption.execute(remapperBuilder); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
| 		TinyRemapper remapper = remapperBuilder.build(); | 		TinyRemapper remapper = remapperBuilder.build(); | ||||||
| 
 | 
 | ||||||
| 		Path[] remapClasspath = classPath.stream() | 		Path[] remapClasspath = classPath.stream() | ||||||
|  | @ -102,6 +110,10 @@ public class JarRemapper { | ||||||
| 		remapData.forEach(RemapData::complete); | 		remapData.forEach(RemapData::complete); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	public void addOptions(List<Action<TinyRemapper.Builder>> remapOptions) { | ||||||
|  | 		this.remapOptions = remapOptions; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	public static class RemapData { | 	public static class RemapData { | ||||||
| 		public final Path input; | 		public final Path input; | ||||||
| 		public final Path output; | 		public final Path output; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue