def main(argv): args = docopt(__doc__, argv=argv) verbose = args['--verbose'] item = Item(args['<identifier>']) # Files that cannot be deleted via S3. no_delete = ['_meta.xml', '_files.xml', '_meta.sqlite'] if verbose: stdout.write('Deleting files from {0}\n'.format(item.identifier)) if args['--all']: files = [f for f in item.files()] args['--cacade'] = True else: files = [item.file(f) for f in args['<file>']] for f in files: if not f: if verbose: stderr.write(' error: "{0}" does not exist\n'.format(f.name)) exit(1) if any(f.name.endswith(s) for s in no_delete): continue resp = f.delete(verbose=args['--verbose'], cascade_delete=args['--cascade']) if resp.status_code != 204: error = parseString(resp.content) msg = get_xml_text(error.getElementsByTagName('Message')) stderr.write(' error: {0} ({1})\n'.format(msg, resp.status_code)) exit(1)
def main(argv): args = docopt(__doc__, argv=argv) if args['--verbose'] and not args['--debug']: stdout.write('getting item: {0}\n'.format(args['<identifier>'])) upload_kwargs = dict(metadata=get_args_dict(args['--metadata']), headers=get_args_dict(args['--header']), debug=args['--debug'], queue_derive=args['--no-derive'], ignore_bucket=args['--ignore-bucket'], verbose=args['--verbose']) # Upload stdin. if args['<file>'] == ['-'] and not args['-']: stderr.write('--remote-name is required when uploading from stdin.\n') call(['ia', 'upload', '--help']) exit(1) if args['-']: local_file = TemporaryFile() local_file.write(stdin.read()) local_file.seek(0) upload_kwargs['remote_name'] = args['--remote-name'] # Upload files. else: local_file = args['<file>'] response = upload(args['<identifier>'], local_file, **upload_kwargs) if args['--debug']: for i, r in enumerate(response): if i != 0: stdout.write('---\n') headers = '\n'.join( [' {0}: {1}'.format(k, v) for (k, v) in r.headers.items()]) stdout.write('Endpoint:\n {0}\n\n'.format(r.url)) stdout.write('HTTP Headers:\n{0}\n'.format(headers)) else: for resp in response: if resp.status_code == 200: continue error = parseString(resp.content) code = get_xml_text(error.getElementsByTagName('Code')) msg = get_xml_text(error.getElementsByTagName('Message')) stderr.write('error "{0}" ({1}): {2}\n'.format( code, resp.status_code, msg)) exit(1)
def main(argv): args = docopt(__doc__, argv=argv) if args['--verbose'] and not args['--debug']: stdout.write('getting item: {0}\n'.format(args['<identifier>'])) upload_kwargs = dict( metadata=get_args_dict(args['--metadata']), headers=get_args_dict(args['--header']), debug=args['--debug'], queue_derive=True if args['--no-derive'] is False else False, ignore_preexisting_bucket=args['--ignore-bucket'], verbose=args['--verbose']) # Upload stdin. if args['<file>'] == ['-'] and not args['-']: stderr.write('--remote-name is required when uploading from stdin.\n') call(['ia', 'upload', '--help']) exit(1) if args['-']: local_file = TemporaryFile() local_file.write(stdin.read()) local_file.seek(0) upload_kwargs['remote_name'] = args['--remote-name'] # Upload files. else: local_file = args['<file>'] response = upload(args['<identifier>'], local_file, **upload_kwargs) if args['--debug']: for i, r in enumerate(response): if i != 0: stdout.write('---\n') headers = '\n'.join([' {0}: {1}'.format(k,v) for (k,v) in r.headers.items()]) stdout.write('Endpoint:\n {0}\n\n'.format(r.url)) stdout.write('HTTP Headers:\n{0}\n'.format(headers)) else: for resp in response: if resp.status_code == 200: continue error = parseString(resp.content) code = get_xml_text(error.getElementsByTagName('Code')) msg = get_xml_text(error.getElementsByTagName('Message')) stderr.write('error "{0}" ({1}): {2}\n'.format(code, resp.status_code, msg)) exit(1)