in formatter/src/main/java/org/apache/royale/formatter/config/CommandLineConfigurator.java [350:579]
public static String usage(String program, String defaultVar, ConfigurationBuffer cfgbuf, Set<String> keywords, LocalizationManager lmgr, String l10nPrefix)
{
boolean isCompc = program.contains("compc");
Map<String, String> aliases = getAliases(cfgbuf);
Map<String, String> sesaila = new HashMap<String, String>();
for (Iterator<Map.Entry<String, String>> it = aliases.entrySet().iterator(); it.hasNext();)
{
Map.Entry<String, String> e = it.next();
sesaila.put(e.getValue(), e.getKey());
}
TreeSet<String> printSet = new TreeSet<String>();
boolean all = false;
boolean advanced = false;
boolean details = false;
boolean syntax = false;
boolean printaliases = false;
// figure out behavior..
Set<String> newSet = new HashSet<String>();
for (Iterator<String> kit = keywords.iterator(); kit.hasNext();)
{
String keyword = kit.next();
if (keyword.equals("list"))
{
all = true;
newSet.add("*");
}
else if (keyword.equals("advanced"))
{
advanced = true;
if (keywords.size() == 1)
{
all = true;
newSet.add("*");
}
}
else if (keyword.equals("details"))
{
details = true;
}
else if (keyword.equals("syntax"))
{
syntax = true;
}
else if (keyword.equals("aliases"))
{
printaliases = true;
}
else
{
details = true;
newSet.add(keyword);
}
}
if (syntax)
{
final List<String> lines = ConfigurationBuffer.formatText(getSyntaxDescription(program, defaultVar, advanced, lmgr, l10nPrefix), 78);
return Joiner.on("\n").join(lines);
}
keywords = newSet;
// accumulate set to print
for (Iterator<String> kit = keywords.iterator(); kit.hasNext();)
{
String keyword = kit.next().toLowerCase();
for (final String var : cfgbuf.getVars())
{
ConfigurationInfo info = cfgbuf.getInfo(var);
// If the client is not "compc", skip "compc-only" options.
if (info.isCompcOnly && !isCompc)
continue;
String description = getDescription(cfgbuf, var, lmgr, l10nPrefix);
if ((all
|| (var.indexOf(keyword) != -1)
|| ((description != null) && (description.toLowerCase().indexOf(keyword) != -1))
|| (keyword.matches(var))
|| ((sesaila.get(var) != null) && (sesaila.get(var)).indexOf(keyword) != -1))
&& (!info.isHidden())
&& (!info.isRemoved())
&& (advanced || !info.isAdvanced()))
{
if (printaliases && sesaila.containsKey(var))
printSet.add(sesaila.get(var));
else
printSet.add(var);
}
else
{
/*
* for (int i = 0; i < info.getAliases().length; ++i) {
* String alias = info.getAliases()[i]; if (alias.indexOf(
* keyword ) != -1) { printSet.add( var ); } }
*/
}
}
}
StringBuilder output = new StringBuilder(1024);
if (printSet.size() == 0)
{
String nkm = lmgr.getLocalizedTextString(l10nPrefix + ".NoKeywordsMatched");
output.append(nkm);
output.append("\n");
}
else
for (Iterator<String> it = printSet.iterator(); it.hasNext();)
{
String avar = it.next();
String var = avar;
if (aliases.containsKey(avar))
var = aliases.get(avar);
ConfigurationInfo info = cfgbuf.getInfo(var);
assert info != null;
output.append("-");
output.append(avar);
int count = cfgbuf.getVarArgCount(var);
if ((count >= 1) && (!isBoolean(cfgbuf, var)))
{
for (int i = 0; i < count; ++i)
{
output.append(" <");
output.append(cfgbuf.getVarArgName(var, i));
output.append(">");
}
}
else if (count == -1)
{
String last = "";
for (int i = 0; i < 5; ++i)
{
String argname = cfgbuf.getVarArgName(var, i);
if (!argname.equals(last))
{
output.append(" [");
output.append(argname);
output.append("]");
last = argname;
}
else
{
output.append(" [...]");
break;
}
}
}
output.append("\n");
if (details)
{
StringBuilder description = new StringBuilder(160);
if (printaliases)
{
if (aliases.containsKey(avar))
{
String fullname = lmgr.getLocalizedTextString(l10nPrefix + ".FullName");
description.append(fullname);
description.append(" -");
description.append(aliases.get(avar));
description.append("\n");
}
}
else if (sesaila.containsKey(var))
{
String alias = lmgr.getLocalizedTextString(l10nPrefix + ".Alias");
description.append(alias);
description.append(" -");
description.append(sesaila.get(var));
description.append("\n");
}
String d = getDescription(cfgbuf, var, lmgr, l10nPrefix);
if (var.equals("help") && (printSet.size() > 2))
{
String helpKeywords = lmgr.getLocalizedTextString(l10nPrefix + ".HelpKeywords");
description.append(helpKeywords);
}
else if (d != null)
description.append(d);
String flags = "";
if (info.isAdvanced())
{
String advancedString = lmgr.getLocalizedTextString(l10nPrefix + ".Advanced");
flags += (((flags.length() == 0) ? " (" : ", ") + advancedString);
}
if (info.allowMultiple())
{
String repeatableString = lmgr.getLocalizedTextString(l10nPrefix + ".Repeatable");
flags += (((flags.length() == 0) ? " (" : ", ") + repeatableString);
}
if ((defaultVar != null) && var.equals(defaultVar))
{
String defaultString = lmgr.getLocalizedTextString(l10nPrefix + ".Default");
flags += (((flags.length() == 0) ? " (" : ", ") + defaultString);
}
if (info.isRoyaleOnly())
{
String royaleOnlylString = Messages.getString("RoyaleOnly");
flags += (((flags.length() == 0) ? " (" : ", ") + royaleOnlylString);
}
if (flags.length() != 0)
{
flags += ")";
}
description.append(flags);
List<String> descriptionLines = ConfigurationBuffer.formatText(description.toString(), 70);
for (final String next : descriptionLines)
{
output.append(" ");
output.append(next);
output.append("\n");
}
}
}
return output.toString();
}