public static void main()

in modules/jretools/src/main/java/org/apache/harmony/jretools/pack200/Main.java [39:274]


    public static void main(String args[]) throws Exception {
        String inputFileName = null;
        String outputFileName = null;
        PackingOptions options = new PackingOptions();
        String value = null;

        for (int i = 0; i < args.length; i++) {
            if ("--help".equals(args[i]) || "-help".equals(args[i])
                    || "-h".equals(args[i]) || "-?".equals(args[i])) {
                printHelp();
                return;
            } else if ("-V".equals(args[i]) || "--version".equals(args[i])) {
                printVersion();
                return;
            } else if ("-g".equals(args[i]) || "--no-gzip".equals(args[i])) {
                options.setGzip(false);
            } else if ("--gzip".equals(args[i])) {
                options.setGzip(true);
            } else if ("-G".equals(args[i]) || "--strip-debug".equals(args[i])) {
                options.setStripDebug(true);
            } else if ("-O".equals(args[i])
                    || "--no-keep-file-order".equals(args[i])) {
                options.setKeepFileOrder(false);
            } else if ("--keep-file-order".equals(args[i])) {
                options.setKeepFileOrder(true);
            } else if (args[i].startsWith("-S")) {
                value = args[i].substring(2);
                if(value.length() == 0) {
                    if(i + 1 < args.length) {
                        value = args[++i];
                    } else {
                        printErrorMessage("Bad argument: -S ?");
                        printUsage();
                        return;
                    }
                }
                options.setSegmentLimit(Long.parseLong(value));
            } else if (args[i].startsWith("--segment-limit=")) {
                options.setSegmentLimit(Long.parseLong(args[i].substring(16)));
            } else if (args[i].startsWith("-E")) {
                value = args[i].substring(2);
                if (value.length() == 0) {
                    if (i + 1 < args.length) {
                        value = args[++i];
                    } else {
                        printErrorMessage("Bad argument: -E ?");
                        printUsage();
                        return;
                    }
                }
                options.setEffort(Integer.parseInt(value));
            } else if (args[i].startsWith("--effort=")) {
                options.setEffort(Integer.parseInt(args[i].substring(9)));
            } else if (args[i].startsWith("-H")) {
                value = args[i].substring(2);
                if (value.length() == 0) {
                    if (i + 1 < args.length) {
                        value = args[++i];
                    } else {
                        printErrorMessage("Bad argument: -H ?");
                        printUsage();
                        return;
                    }
                }
                options.setDeflateHint(value);
            } else if (args[i].startsWith("--deflate-hint=")) {
                options.setDeflateHint(args[i].substring(15));
            } else if (args[i].startsWith("-m")) {
                value = args[i].substring(2);
                if (value.length() == 0) {
                    if (i + 1 < args.length) {
                        value = args[++i];
                    } else {
                        printErrorMessage("Bad argument: -m ?");
                        printUsage();
                        return;
                    }
                }
                options.setModificationTime(value);
            } else if (args[i].startsWith("--modification-time=")) {
                options.setModificationTime(args[i].substring(20));
            } else if (args[i].startsWith("-P")) {
                value = args[i].substring(2);
                if (value.length() == 0) {
                    if (i + 1 < args.length) {
                        value = args[++i];
                    } else {
                        printErrorMessage("Bad argument: -P ?");
                        printUsage();
                        return;
                    }
                }
                options.addPassFile(value);
            } else if (args[i].startsWith("--pass-file=")) {
                options.addPassFile(args[i].substring(12));
            } else if (args[i].startsWith("-U")) {
                value = args[i].substring(2);
                if (value.length() == 0) {
                    if (i + 1 < args.length) {
                        value = args[++i];
                    } else {
                        printErrorMessage("Bad argument: -U ?");
                        printUsage();
                        return;
                    }
                }
                options.setUnknownAttributeAction(value);
            } else if (args[i].startsWith("--unknown-attribute=")) {
                options.setUnknownAttributeAction(args[i].substring(20));
            } else if (args[i].startsWith("-C")) {
                value = args[i].substring(2);
                if (value.length() == 0) {
                    if (i + 1 < args.length) {
                        value = args[++i];
                    } else {
                        printErrorMessage("Bad argument: -C ?");
                        printUsage();
                        return;
                    }
                }
                String[] nameEqualsAction = value.split("=");
                options.addClassAttributeAction(nameEqualsAction[0],
                        nameEqualsAction[1]);
            } else if (args[i].startsWith("--class-attribute=")) {
                String[] nameEqualsAction = args[i].substring(18).split("=");
                options.addClassAttributeAction(nameEqualsAction[0],
                        nameEqualsAction[1]);
            } else if (args[i].startsWith("-F")) {
                value = args[i].substring(2);
                if (value.length() == 0) {
                    if (i + 1 < args.length) {
                        value = args[++i];
                    } else {
                        printErrorMessage("Bad argument: -F ?");
                        printUsage();
                        return;
                    }
                }
                String[] nameEqualsAction = value.split("=");
                options.addFieldAttributeAction(nameEqualsAction[0],
                        nameEqualsAction[1]);
            } else if (args[i].startsWith("--field-attribute=")) {
                String[] nameEqualsAction = args[i].substring(18).split("=");
                options.addFieldAttributeAction(nameEqualsAction[0],
                        nameEqualsAction[1]);
            } else if (args[i].startsWith("-M")) {
                value = args[i].substring(2);
                if (value.length() == 0) {
                    if (i + 1 < args.length) {
                        value = args[++i];
                    } else {
                        printErrorMessage("Bad argument: -M ?");
                        printUsage();
                        return;
                    }
                }
                String[] nameEqualsAction = value.split("=");
                options.addMethodAttributeAction(nameEqualsAction[0],
                        nameEqualsAction[1]);
            } else if (args[i].startsWith("--method-attribute=")) {
                String[] nameEqualsAction = args[i].substring(19).split("=");
                options.addMethodAttributeAction(nameEqualsAction[0],
                        nameEqualsAction[1]);
            } else if (args[i].startsWith("-D")) {
                value = args[i].substring(2);
                if (value.length() == 0) {
                    if (i + 1 < args.length) {
                        value = args[++i];
                    } else {
                        printErrorMessage("Bad argument: -D ?");
                        printUsage();
                        return;
                    }
                }
                String[] nameEqualsAction = value.split("=");
                options.addCodeAttributeAction(nameEqualsAction[0],
                        nameEqualsAction[1]);
            } else if (args[i].startsWith("--code-attribute=")) {
                String[] nameEqualsAction = args[i].substring(17).split("=");
                options.addCodeAttributeAction(nameEqualsAction[0],
                        nameEqualsAction[1]);
            } else if ("-v".equals(args[i]) || "--verbose".equals(args[i])) {
                options.setVerbose(true);
                options.setQuiet(false);
            } else if ("-q".equals(args[i]) || "--quiet".equals(args[i])) {
                options.setQuiet(true);
                options.setVerbose(false);
            } else if (args[i].startsWith("-l")) {
                value = args[i].substring(2);
                if (value.length() == 0) {
                    if (i + 1 < args.length) {
                        value = args[++i];
                    } else {
                        printErrorMessage("Bad argument: -l ?");
                        printUsage();
                        return;
                    }
                }
                options.setLogFile(value);
            } else if (args[i].startsWith("--log-file=")) {
                options.setLogFile(args[i].substring(11));
            } else if ("-r".equals(args[i]) || "--repack".equals(args[i])) {
                options.setRepack(true);
            } else if (args[i].startsWith("-f")) {
                value = args[i].substring(2);
                if (value.length() == 0) {
                    if (i + 1 < args.length) {
                        value = args[++i];
                    } else {
                        printErrorMessage("Bad argument: -f ?");
                        printUsage();
                        return;
                    }
                }
                loadPackProperties(value, options);
            } else if (args[i].startsWith("--config-file=")) {
                loadPackProperties(args[i].substring(14), options);
            } else {
                outputFileName = args[i];
                if (args.length > i + 1) {
                    if (args.length == i + 2) {
                        inputFileName = args[++i];
                    } else {
                        printUsage();
                        return;
                    }
                }
            }
        }

        if (options.isRepack()) {
            repack(inputFileName, outputFileName, options);
        } else {
            pack(inputFileName, outputFileName, options);
        }
    }