Signal-iOS/Scripts/debug_log_upload.py
Evan Hahn e8b4b8f15c Scripts: subprocess.check_output should use text=True for compatibility
In Python 2, `subprocess.check_output` returns a string. In Python 3, it
returns a byte string unless you provide `text=True`.

This makes sure all calls have that option for compatibility.

Also, my editor was auto-formatting these with [Black][0], which I
didn't prevent, so now these files are formatted a little better.

[0]: https://github.com/psf/black
2022-03-24 17:28:12 -05:00

77 lines
2.0 KiB
Python
Executable File

#!/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)