From 5d8c611b8a5d82167f34ef4f60ac9655a747ef3b Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" Date: Fri, 1 Nov 2013 12:31:27 -0400 Subject: Added mechanism to deprecate CLI commands. The CLI framework has been modified to support deprecating CLI commands by adding @Deprecated to the class name. --- .../src/com/netscape/cmstools/cli/CLI.java | 41 ++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) (limited to 'base/java-tools/src/com/netscape') diff --git a/base/java-tools/src/com/netscape/cmstools/cli/CLI.java b/base/java-tools/src/com/netscape/cmstools/cli/CLI.java index abe0883b1..6bd7d69ab 100644 --- a/base/java-tools/src/com/netscape/cmstools/cli/CLI.java +++ b/base/java-tools/src/com/netscape/cmstools/cli/CLI.java @@ -18,6 +18,8 @@ package com.netscape.cmstools.cli; +import java.util.ArrayList; +import java.util.Collection; import java.util.LinkedHashMap; import java.util.Map; @@ -91,6 +93,10 @@ public class CLI { return parent; } + public boolean isDeprecated() { + return getClass().getAnnotation(Deprecated.class) != null; + } + public CLI getModule(String name) { return modules.get(name); } @@ -112,14 +118,25 @@ public class CLI { return null; } - public void printHelp() { + public Collection getDeprecatedModules() { + Collection list = new ArrayList(); + for (CLI module : modules.values()) { + if (!module.isDeprecated()) continue; + list.add(module); + } + return list; + } - System.out.println("Commands:"); + public void printHelp() { int leftPadding = 1; int rightPadding = 25; + System.out.println("Commands:"); + for (CLI module : modules.values()) { + if (module.isDeprecated()) continue; + String label = module.getFullName(); int padding = rightPadding - leftPadding - label.length(); @@ -131,6 +148,26 @@ public class CLI { System.out.print(StringUtils.repeat(" ", padding)); System.out.println(module.getDescription()); } + + Collection deprecatedModules = getDeprecatedModules(); + + if (!deprecatedModules.isEmpty()) { + System.out.println(); + System.out.println("Deprecated:"); + + for (CLI module : deprecatedModules) { + String label = module.getFullName(); + + int padding = rightPadding - leftPadding - label.length(); + if (padding < 1) + padding = 1; + + System.out.print(StringUtils.repeat(" ", leftPadding)); + System.out.print(label); + System.out.print(StringUtils.repeat(" ", padding)); + System.out.println(module.getDescription()); + } + } } public void execute(String[] args) throws Exception { -- cgit