protected void doExecute()

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.");
                }
            }
        }
    }