in features/command/src/main/java/org/apache/karaf/features/command/InfoFeatureCommand.java [90:190]
protected void doExecute(FeaturesService admin) throws Exception {
Feature[] features = null;
if (version != null && version.length() > 0) {
features = admin.getFeatures(name, version);
} else {
features = admin.getFeatures(name);
}
if (features == null || features.length == 0) {
System.out.println("Feature not found");
return;
}
if (xml) {
boolean colored;
switch (color != null ? color : "auto") {
case "always":
case "yes":
case "force":
colored = true;
break;
case "never":
case "no":
case "none":
colored = false;
break;
case "auto":
case "tty":
case "if-tty":
colored = Process.Utils.current().isTty(1);
break;
default:
throw new IllegalArgumentException("invalid argument ‘" + color + "’ for ‘--color’");
}
for (Feature feature : features) {
String xml = admin.getFeatureXml(feature);
if (colored) {
xml = colorize(session, xml);
}
System.out.println(xml);
}
return;
}
// default behavior
if (!config && !dependency && !bundle && !conditional && !tree) {
config = true;
dependency = true;
bundle = true;
conditional = true;
}
boolean first = true;
for (Feature feature : features) {
if (first) {
first = false;
} else {
System.out.println("------------------------------------");
}
System.out.println("Feature " + feature.getName() + " " + feature.getVersion());
if (feature.getDescription() != null) {
System.out.println("Description:");
System.out.println(INDENT + feature.getDescription());
}
if (feature.getDetails() != null) {
System.out.println("Details:");
printWithIndent(feature.getDetails());
}
if (config) {
displayConfigInformation(feature, FEATURE_CONTENT);
displayConfigFileInformation(feature, FEATURE_CONTENT);
}
if (dependency) {
displayDependencyInformation(feature, FEATURE_CONTENT);
}
if (bundle) {
displayBundleInformation(feature, FEATURE_CONTENT);
}
if (conditional) {
displayConditionalInfo(feature);
}
if (tree) {
if (config || dependency || bundle || conditional) {
System.out.println("\nFeature tree");
}
int unresolved = displayFeatureTree(admin, feature.getName(), feature.getVersion(), "");
if (unresolved > 0) {
System.out.println("Tree contains " + unresolved + " unresolved dependencies");
System.out.println(" * means that node declares dependency but the dependent feature is not available.");
}
}
}
}