'dump' command can dump information from given image, which could be a image file, folder or device by adb. Use $./gsi_util.py dump --help for the detail. The patch also includes a "dump" framework, to implement some dumpers to dump information. This patch also includes PropDumper to dump information from property files, and XmlDumper to dump information from XML files. There is an initial dump info list in dump_info_list.py. Use subcommand 'list_dump' could output the list. Usually using Dumper is enough to dump information. dump.py is an example to use Dumper. Bug: 70253764 Test: dump from different mounter Change-Id: I7c05f8f24d44d3c7429f2c428963f64191f49a53
75 lines
2.2 KiB
Python
Executable File
75 lines
2.2 KiB
Python
Executable File
#!/usr/bin/env python
|
|
#
|
|
# Copyright 2017 - The Android Open Source Project
|
|
#
|
|
# 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.
|
|
|
|
"""gsi_util command-line utility."""
|
|
|
|
import argparse
|
|
import logging
|
|
import sys
|
|
|
|
|
|
class GsiUtil(object):
|
|
"""Object for gsi_util command line tool."""
|
|
|
|
_GSI_UTIL_VERSION = '1.0'
|
|
|
|
# Adds gsi_util COMMAND here.
|
|
# TODO(bowgotsai): auto collect from gsi_util/commands/*.py
|
|
_COMMANDS = ['flash_gsi', 'pull', 'dump', 'hello']
|
|
|
|
_LOGGING_FORMAT = '%(message)s'
|
|
_LOGGING_LEVEL = logging.WARNING
|
|
|
|
@staticmethod
|
|
def _get_module_name(command):
|
|
return 'gsi_util.commands.' + command
|
|
|
|
def run(self, argv):
|
|
"""Command-line processor."""
|
|
|
|
# Sets up default logging.
|
|
logging.basicConfig(format=self._LOGGING_FORMAT, level=self._LOGGING_LEVEL)
|
|
|
|
# Adds top-level --version/--debug argument.
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('-v', '--version', action='version',
|
|
version='%(prog)s {}'.format(self._GSI_UTIL_VERSION))
|
|
parser.add_argument(
|
|
'-d', '--debug', help='debug mode.', action='store_true')
|
|
|
|
# Adds subparsers for each COMMAND.
|
|
subparsers = parser.add_subparsers(title='COMMAND')
|
|
for command in self._COMMANDS:
|
|
module_name = self._get_module_name(command)
|
|
mod = __import__(module_name, globals(), locals(), ['setup_command_args'])
|
|
mod.setup_command_args(subparsers)
|
|
|
|
args = parser.parse_args(argv[1:])
|
|
if args.debug:
|
|
logging.getLogger().setLevel(logging.DEBUG)
|
|
|
|
try:
|
|
args.func(args)
|
|
except Exception as e:
|
|
logging.error('%s: %s', argv[0], e.message)
|
|
logging.exception(e)
|
|
sys.exit(1)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
tool = GsiUtil()
|
|
tool.run(sys.argv)
|