async def main(loop):
    parser = argparse.ArgumentParser(
        description=('Read S3 CSV inventory from stdin '
                     'and print out Kinto records.'))
    parser.add_argument('-v',
                        '--verbose',
                        action='store_const',
                        const=logging.INFO,
                        dest='verbosity',
                        help='Show all messages.')

    parser.add_argument('-D',
                        '--debug',
                        action='store_const',
                        const=logging.DEBUG,
                        dest='verbosity',
                        help='Show all messages, including debug messages.')
    args = parser.parse_args()

    logger.addHandler(logging.StreamHandler())
    if args.verbosity:
        logger.setLevel(args.verbosity)
    else:
        logger.setLevel(logging.WARNING)

    async for record in csv_to_records(loop,
                                       stream_as_generator(loop, sys.stdin)):
        sys.stdout.write(json.dumps(record) + '\n')
Example #2
0
def run():
    loop = asyncio.get_event_loop()
    stdin_generator = stream_as_generator(loop, sys.stdin)
    records_generator = parse_json(stdin_generator)

    parser = cli_utils.add_parser_options(
        description='Read records from stdin as JSON and push them to Kinto',
        default_server=DEFAULT_SERVER,
        default_bucket=DEFAULT_BUCKET,
        default_retry=NB_RETRY_REQUEST,
        default_collection=DEFAULT_COLLECTION)
    parser.add_argument('--skip',
                        action='store_true',
                        help='Skip records that exist and are equal.')
    cli_args = parser.parse_args()
    cli_utils.setup_logger(logger, cli_args)

    logger.info(
        'Publish at {server}/buckets/{bucket}/collections/{collection}'.format(
            **cli_args.__dict__))

    client = cli_utils.create_client_from_args(cli_args)

    main_coro = main(loop,
                     records_generator,
                     client,
                     skip_existing=cli_args.skip)

    loop.run_until_complete(main_coro)
    loop.close()