Add replication_util, a CLI for replication_lib.

- The CLI just reads a ReplicationConfig and passes it
to replication_lib. In the future, may support more
functionality, such as dry running.

TEST=run_tests scripts/replication_util_unittest
BUG=chromium:1021252

Change-Id: I2561ee506447424153f6ea280e219552966c6a0d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1898378
Tested-by: Andrew Lamb <andrewlamb@chromium.org>
Commit-Queue: Andrew Lamb <andrewlamb@chromium.org>
Reviewed-by: David Burger <dburger@chromium.org>
diff --git a/scripts/replication_util.py b/scripts/replication_util.py
new file mode 100644
index 0000000..f9d7083
--- /dev/null
+++ b/scripts/replication_util.py
@@ -0,0 +1,45 @@
+# -*- coding: utf-8 -*-
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""A CLI to do the replication described by a ReplicationConfig proto."""
+
+from __future__ import print_function
+
+from google.protobuf import json_format
+
+from chromite.api.gen.config import replication_config_pb2
+from chromite.lib import commandline
+from chromite.lib import osutils
+from chromite.lib import replication_lib
+
+
+def GetParser():
+  """Creates the argparse parser."""
+  parser = commandline.ArgumentParser(description=__doc__)
+  subparsers = parser.add_subparsers()
+
+  run_subparser = subparsers.add_parser('run', help='Run a ReplicationConfig')
+  run_subparser.add_argument(
+      'replication_config', help='Path to the ReplicationConfig JSONPB')
+  run_subparser.set_defaults(func=Run)
+
+  return parser
+
+
+def Run(options):
+  """Runs the replication described by a PrelicationConfig proto."""
+  replication_config = json_format.Parse(
+      osutils.ReadFile(options.replication_config),
+      replication_config_pb2.ReplicationConfig(),
+  )
+
+  replication_lib.Replicate(replication_config)
+
+
+def main(argv):
+  parser = GetParser()
+  options = parser.parse_args(argv)
+
+  options.func(options)