Move BazelRuleClassProvider.SH_RULES to its own class.

PiperOrigin-RevId: 185021810
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index 36bf355..ac13fd9 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -43,10 +43,6 @@
 import com.google.devtools.build.lib.bazel.rules.python.BazelPyRuntimeRule;
 import com.google.devtools.build.lib.bazel.rules.python.BazelPyTestRule;
 import com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration;
-import com.google.devtools.build.lib.bazel.rules.sh.BazelShBinaryRule;
-import com.google.devtools.build.lib.bazel.rules.sh.BazelShLibraryRule;
-import com.google.devtools.build.lib.bazel.rules.sh.BazelShRuleClasses;
-import com.google.devtools.build.lib.bazel.rules.sh.BazelShTestRule;
 import com.google.devtools.build.lib.bazel.rules.workspace.GitRepositoryRule;
 import com.google.devtools.build.lib.bazel.rules.workspace.HttpArchiveRule;
 import com.google.devtools.build.lib.bazel.rules.workspace.HttpFileRule;
@@ -168,22 +164,6 @@
         }
       };
 
-  public static final RuleSet SH_RULES =
-      new RuleSet() {
-        @Override
-        public void init(Builder builder) {
-          builder.addRuleDefinition(new BazelShRuleClasses.ShRule());
-          builder.addRuleDefinition(new BazelShLibraryRule());
-          builder.addRuleDefinition(new BazelShBinaryRule());
-          builder.addRuleDefinition(new BazelShTestRule());
-        }
-
-        @Override
-        public ImmutableList<RuleSet> requires() {
-          return ImmutableList.of(CoreRules.INSTANCE);
-        }
-      };
-
   public static final RuleSet CPP_PROTO_RULES =
       new RuleSet() {
         @Override
@@ -333,7 +313,7 @@
           ConfigRules.INSTANCE,
           PlatformRules.INSTANCE,
           PROTO_RULES,
-          SH_RULES,
+          ShRules.INSTANCE,
           CcRules.INSTANCE,
           CPP_PROTO_RULES,
           JavaRules.INSTANCE,
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/ShRules.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/ShRules.java
new file mode 100644
index 0000000..e49ee96
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/ShRules.java
@@ -0,0 +1,47 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.bazel.rules;
+
+import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.Builder;
+import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.RuleSet;
+import com.google.devtools.build.lib.bazel.rules.sh.BazelShBinaryRule;
+import com.google.devtools.build.lib.bazel.rules.sh.BazelShLibraryRule;
+import com.google.devtools.build.lib.bazel.rules.sh.BazelShRuleClasses;
+import com.google.devtools.build.lib.bazel.rules.sh.BazelShTestRule;
+import com.google.devtools.build.lib.rules.core.CoreRules;
+
+/**
+ * Rules for shell support in Bazel.
+ */
+public class ShRules implements RuleSet {
+  public static final ShRules INSTANCE = new ShRules();
+
+  private ShRules() {
+    // Use the static INSTANCE field instead.
+  }
+
+  @Override
+  public void init(Builder builder) {
+    builder.addRuleDefinition(new BazelShRuleClasses.ShRule());
+    builder.addRuleDefinition(new BazelShLibraryRule());
+    builder.addRuleDefinition(new BazelShBinaryRule());
+    builder.addRuleDefinition(new BazelShTestRule());
+  }
+
+  @Override
+  public ImmutableList<RuleSet> requires() {
+    return ImmutableList.of(CoreRules.INSTANCE);
+  }
+}
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java
index 222c198..59c070b 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java
@@ -106,7 +106,7 @@
 
   @Test
   public void shConsistency() {
-    checkModule(BazelRuleClassProvider.SH_RULES);
+    checkModule(ShRules.INSTANCE);
   }
 
   @Test