Support marking packages as hidden via command-line.

This adds support for marking specific packages as hidden via
command-line switch hidePackage. This is useful when the package in
question cannot be marked with @hide, for example, because the
package name in .class file is different from package name in source
file, or because the package may need to be visible in another body
of documentation.

Bug: 15073623
Change-Id: Iffcf5f3d50cc8db25a3bbfb244ce74c287e3875f
diff --git a/src/com/google/doclava/Doclava.java b/src/com/google/doclava/Doclava.java
index 213492a..38e9c4c 100644
--- a/src/com/google/doclava/Doclava.java
+++ b/src/com/google/doclava/Doclava.java
@@ -88,6 +88,7 @@
   public static HashSet<String> knownTags = new HashSet<String>();
   public static FederationTagger federationTagger = new FederationTagger();
   public static Set<String> showAnnotations = new HashSet<String>();
+  public static Set<String> hiddenPackages = new HashSet<String>();
   public static boolean includeDefaultAssets = true;
   private static boolean generateDocs = true;
   private static boolean parseComments = false;
@@ -207,6 +208,8 @@
         keepListFile = a[1];
       } else if (a[0].equals("-showAnnotation")) {
         showAnnotations.add(a[1]);
+      } else if (a[0].equals("-hidePackage")) {
+        hiddenPackages.add(a[1]);
       } else if (a[0].equals("-proguard")) {
         proguardFile = a[1];
       } else if (a[0].equals("-proofread")) {
@@ -573,6 +576,9 @@
     if (option.equals("-showAnnotation")) {
       return 2;
     }
+    if (option.equals("-hidePackage")) {
+      return 2;
+    }
     if (option.equals("-proguard")) {
       return 2;
     }
diff --git a/src/com/google/doclava/PackageInfo.java b/src/com/google/doclava/PackageInfo.java
index 65a9639..a3ecfe1 100644
--- a/src/com/google/doclava/PackageInfo.java
+++ b/src/com/google/doclava/PackageInfo.java
@@ -83,6 +83,9 @@
 
   @Override
   public boolean isHidden() {
+    if (Doclava.hiddenPackages.contains(mName)) {
+      return true;
+    }
     return comment().isHidden();
   }