#!/usr/bin/env python import sys import os import re import commands import subprocess import argparse import inspect import urllib2 import json def fail(message): file_name = __file__ current_line_no = inspect.stack()[1][2] current_function_name = inspect.stack()[1][3] print 'Failure in:', file_name, current_line_no, current_function_name print message sys.exit(1) def execute_command(command): try: print ' '.join(command) output = subprocess.check_output(command) if output: print output except subprocess.CalledProcessError as e: print e.output sys.exit(1) def add_field(curl_command, form_key, form_value): curl_command.append('-F') curl_command.append("%s=%s" % (form_key, form_value)) if __name__ == '__main__': parser = argparse.ArgumentParser(description='Precommit cleanup script.') parser.add_argument('--file', required=True, help='used for starting a new version.') args = parser.parse_args() params_response = urllib2.urlopen("https://debuglogs.org/").read() params = json.loads(params_response) upload_url = params['url'] upload_fields = params['fields'] upload_key = upload_fields.pop('key') upload_key = upload_key + os.path.splitext(args.file)[1] download_url = 'https://debuglogs.org/' + upload_key print 'download_url:', download_url curl_command = ['curl', '-v', '-i', '-X', 'POST'] # key must appear before other fields add_field(curl_command, 'key', upload_key) for field_name in upload_fields: add_field(curl_command, field_name, upload_fields[field_name]) add_field(curl_command, "content-type", "application/octet-stream") curl_command.append('-F') curl_command.append("file=@%s" % (args.file,)) curl_command.append(upload_url) print ' '.join(curl_command) print 'Running...' execute_command(curl_command) print 'download_url:', download_url