package net.sourceforge.retroweaver; import java.io.FileInputStream; import java.io.IOException; import java.io.PrintWriter; import org.objectweb.asm.Attribute; import org.objectweb.asm.ClassReader; import org.objectweb.asm.util.ASMifierClassVisitor; public class ASMifier extends ASMifierClassVisitor { public static void main(final String[] args) throws IOException { int i = 0; boolean skipDebug = true; boolean ok = true; if (args.length < 1 || args.length > 2) { ok = false; } if (ok && args[0].equals("-debug")) { i = 1; skipDebug = false; if (args.length != 2) { ok = false; } } if (!ok) { System.err.println("Prints the ASM code to generate the given class."); // NOPMD by xlv System.err.println("Usage: RetroweaverASMifier [-debug] " // NOPMD by xlv + "<fully qualified class name or class file name>"); return; } ClassReader cr; if (args[i].endsWith(".class") || args[i].indexOf('\\') > -1 || args[i].indexOf('/') > -1) { cr = new ClassReader(new FileInputStream(args[i])); } else { cr = new ClassReader(args[i]); } cr.accept(new ASMifier(new PrintWriter(System.out)), getDefaultAttributes(), skipDebug?ClassReader.SKIP_DEBUG:0); } public ASMifier(final PrintWriter pw) { super(pw); } public static Attribute[] getDefaultAttributes() { return RetroWeaver.CUSTOM_ATTRIBUTES; } }