blob: a5544be2099406a352315a7af51574cc78e16be4 [file] [log] [blame]
# -*- 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
import sys
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
assert sys.version_info >= (3, 6), 'This module requires Python 3.6+'
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.Freeze()
options.func(options)