示例#1
0
def KwargHandler(kwargs, argspec):

  if 'info_cb' in argspec.args:
    # Use an unbuffered version of stdout.
    def InfoCb(message):
      if not message.message:
        return
      sys.stdout.write('%s: %s\n' % (message.header, message.message))
      sys.stdout.flush()
    kwargs['info_cb'] = InfoCb
  if 'progress_callback' in argspec.args:
    bar = progressbar.ProgessBar(
        widgets=[progressbar.Bar(), progressbar.Percentage()])
    bar.start()
    def SetProgress(current, total):
      bar.update(current / total * 100.0)
      if current == total:
        bar.finish()
    kwargs['progress_callback'] = SetProgress
示例#2
0
def main():
    common = common_cli.GetCommonArguments()
    device = common_cli.GetDeviceArguments()
    device.add_argument(
        '--chunk_kb',
        type=int,
        default=1024,
        metavar='1024',
        help='Size of packets to write in Kb. For older devices, it may be '
        'required to use 4.')
    parents = [common, device]

    parser = argparse.ArgumentParser(description=sys.modules[__name__].__doc__,
                                     parents=[common])
    subparsers = parser.add_subparsers(title='Commands', dest='command_name')

    subparser = subparsers.add_parser(name='help',
                                      help='Prints the commands available')
    subparser = subparsers.add_parser(name='devices',
                                      help='Lists the available devices',
                                      parents=[common])
    common_cli.MakeSubparser(subparsers, parents,
                             fastboot.FastbootCommands.Continue)

    common_cli.MakeSubparser(subparsers, parents,
                             fastboot.FastbootCommands.Download,
                             {'source_file': 'Filename on the host to push'})
    common_cli.MakeSubparser(subparsers, parents,
                             fastboot.FastbootCommands.Erase)
    common_cli.MakeSubparser(subparsers, parents,
                             fastboot.FastbootCommands.Flash)
    common_cli.MakeSubparser(subparsers, parents,
                             fastboot.FastbootCommands.Getvar)
    common_cli.MakeSubparser(subparsers, parents,
                             fastboot.FastbootCommands.Oem)
    common_cli.MakeSubparser(subparsers, parents,
                             fastboot.FastbootCommands.Reboot)

    if len(sys.argv) == 1:
        parser.print_help()
        return 2

    args = parser.parse_args()
    if args.verbose:
        logging.basicConfig(level=logging.DEBUG)
    if args.command_name == 'devices':
        return Devices(args)
    if args.command_name == 'help':
        parser.print_help()
        return 0

    kwargs = {}
    argspec = inspect.getargspec(args.method)
    if 'info_cb' in argspec.args:
        kwargs['info_cb'] = _InfoCb
    if 'progress_callback' in argspec.args and progressbar:
        bar = progressbar.ProgessBar(
            widgets=[progressbar.Bar(),
                     progressbar.Percentage()])
        bar.start()

        def SetProgress(current, total):
            bar.update(current / total * 100.0)
            if current == total:
                bar.finish()

        kwargs['progress_callback'] = SetProgress

    return common_cli.StartCli(args,
                               fastboot.FastbootCommands,
                               chunk_kb=args.chunk_kb,
                               extra=kwargs)