private boolean describeCommand()

in src/main/java/org/apache/maven/plugins/help/DescribeMojo.java [645:734]


    private boolean describeCommand(StringBuilder descriptionBuffer) throws MojoExecutionException {
        if (cmd.indexOf(':') == -1) {
            // phase
            Lifecycle lifecycle = defaultLifecycles.getPhaseToLifecycleMap().get(cmd);
            if (lifecycle == null) {
                throw new MojoExecutionException("The given phase '" + cmd + "' is an unknown phase.");
            }

            Map<String, String> defaultLifecyclePhases = lifecycleMappings
                    .get(project.getPackaging())
                    .getLifecycles()
                    .get("default")
                    .getPhases();
            List<String> phases = lifecycle.getPhases();

            if (lifecycle.getDefaultPhases() == null) {
                descriptionBuffer.append("'").append(cmd);
                descriptionBuffer
                        .append("' is a phase corresponding to this plugin:")
                        .append(LS);
                for (String key : phases) {
                    if (!key.equals(cmd)) {
                        continue;
                    }
                    if (defaultLifecyclePhases.get(key) != null) {
                        descriptionBuffer.append(defaultLifecyclePhases.get(key));
                        descriptionBuffer.append(LS);
                    }
                }

                descriptionBuffer.append(LS);
                descriptionBuffer.append("It is a part of the lifecycle for the POM packaging '");
                descriptionBuffer.append(project.getPackaging());
                descriptionBuffer.append("'. This lifecycle includes the following phases:");
                descriptionBuffer.append(LS);
                for (String key : phases) {
                    descriptionBuffer.append("* ").append(key).append(": ");
                    String value = defaultLifecyclePhases.get(key);
                    if (value != null && !value.isEmpty()) {
                        for (StringTokenizer tok = new StringTokenizer(value, ","); tok.hasMoreTokens(); ) {
                            descriptionBuffer.append(tok.nextToken().trim());

                            if (!tok.hasMoreTokens()) {
                                descriptionBuffer.append(LS);
                            } else {
                                descriptionBuffer.append(", ");
                            }
                        }
                    } else {
                        descriptionBuffer.append(NOT_DEFINED).append(LS);
                    }
                }
            } else {
                descriptionBuffer.append("'").append(cmd);
                descriptionBuffer.append("' is a phase within the '").append(lifecycle.getId());
                descriptionBuffer.append("' lifecycle, which has the following phases: ");
                descriptionBuffer.append(LS);

                for (String key : phases) {
                    descriptionBuffer.append("* ").append(key).append(": ");
                    if (lifecycle.getDefaultPhases().get(key) != null) {
                        descriptionBuffer
                                .append(lifecycle.getDefaultPhases().get(key))
                                .append(LS);
                    } else {
                        descriptionBuffer.append(NOT_DEFINED).append(LS);
                    }
                }
            }
            return false;
        }

        // goals
        MojoDescriptor mojoDescriptor;
        try {
            mojoDescriptor = mojoDescriptorCreator.getMojoDescriptor(cmd, session, project);
        } catch (Exception e) {
            throw new MojoExecutionException("Unable to get descriptor for " + cmd, e);
        }
        descriptionBuffer
                .append("'")
                .append(cmd)
                .append("' is a plugin goal (aka mojo)")
                .append(".");
        descriptionBuffer.append(LS);
        plugin = mojoDescriptor.getPluginDescriptor().getId();
        goal = mojoDescriptor.getGoal();

        return true;
    }