#!/usr/bin/env python3 import sys import os import re import subprocess import argparse import inspect import urllib.request, urllib.error, urllib.parse 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, text=True) 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 = urllib.request.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)