001    package net.sourceforge.retroweaver;
002    
003    import java.io.FileInputStream;
004    import java.io.IOException;
005    import java.io.PrintWriter;
006    
007    import org.objectweb.asm.Attribute;
008    import org.objectweb.asm.ClassReader;
009    import org.objectweb.asm.util.ASMifierClassVisitor;
010    
011    public class ASMifier extends ASMifierClassVisitor {
012    
013            public static void main(final String[] args) throws IOException {
014            int i = 0;
015            boolean skipDebug = true;
016    
017            boolean ok = true;
018            if (args.length < 1 || args.length > 2) {
019                ok = false;
020            }
021            if (ok && args[0].equals("-debug")) {
022                i = 1;
023                skipDebug = false;
024                if (args.length != 2) {
025                    ok = false;
026                }
027            }
028            if (!ok) {
029                System.err.println("Prints the ASM code to generate the given class."); // NOPMD by xlv
030                System.err.println("Usage: RetroweaverASMifier [-debug] " // NOPMD by xlv
031                        + "<fully qualified class name or class file name>");
032                return;
033            }
034            ClassReader cr;
035            if (args[i].endsWith(".class") || args[i].indexOf('\\') > -1
036                    || args[i].indexOf('/') > -1) {
037                cr = new ClassReader(new FileInputStream(args[i]));
038            } else {
039                cr = new ClassReader(args[i]);
040            }
041            cr.accept(new ASMifier(new PrintWriter(System.out)),
042                    getDefaultAttributes(),
043                    skipDebug?ClassReader.SKIP_DEBUG:0);
044        }
045    
046            public ASMifier(final PrintWriter pw) {
047                    super(pw);
048            }
049    
050            public static Attribute[] getDefaultAttributes() {
051                    return RetroWeaver.CUSTOM_ATTRIBUTES;
052            }
053    
054    }