public void printUsage()

in gshell-support/gshell-clp/src/main/java/org/apache/geronimo/gshell/clp/Printer.java [164:229]


    public void printUsage(final Writer writer, final String name) {
        assert writer != null;

        PrintWriter out = new PrintWriter(writer);

        List<Handler> argumentHandlers = new ArrayList<Handler>();
        argumentHandlers.addAll(processor.getArgumentHandlers());

        List<Handler> optionHandlers = new ArrayList<Handler>();
        optionHandlers.addAll(processor.getOptionHandlers());

        // For display purposes, we like the argument handlers in argument order, but the option handlers in alphabetical order
        Collections.sort(optionHandlers, new Comparator<Handler>() {
            public int compare(Handler a, Handler b) {
                return a.descriptor.toString().compareTo(b.descriptor.toString());
            }
        });

        if (name != null) {
        	String syntax = printerMessages.format("syntax", name);
            if (!optionHandlers.isEmpty()) {
                syntax = printerMessages.format("syntax.hasOptions", syntax);
        	}
        	if (!argumentHandlers.isEmpty()) {
                syntax = printerMessages.format("syntax.hasArguments", syntax);
        	}
        	out.println(syntax);
        	out.println();
        }

        // Compute the maximum length of the syntax column
        int len = 0;

        for (Handler handler : optionHandlers) {
            int curLen = getPrefixLen(handler);
            len = Math.max(len, curLen);
        }

        for (Handler handler : argumentHandlers) {
            int curLen = getPrefixLen(handler);
            len = Math.max(len, curLen);
        }

        // And then render the handler usage
        if (!argumentHandlers.isEmpty()) {
        	out.println(printerMessages.getMessage("arguments.header"));

            for (Handler handler : argumentHandlers) {
                printHandler(out, handler, len);
            }

            out.println();
        }

        if (!optionHandlers.isEmpty()) {
            out.println(printerMessages.getMessage("options.header"));
            
            for (Handler handler : optionHandlers) {
                printHandler(out, handler, len);
            }

            out.println();
        }
        
        out.flush();
    }