summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2024-06-19 21:55:40 +0200
committerrobojumper <robojumper@gmail.com>2024-06-19 21:55:40 +0200
commit66bb58e7fc96db170546385e2cf1c0cfe72f0cf3 (patch)
treed515d813c96338f0a7aa548a2f26330f255959a4 /tools
parent46ac9cba1191d875d6e4ef0e2cc7c24c50162c0b (diff)
ACTUALLY sync with dtk-template
Diffstat (limited to 'tools')
-rw-r--r--tools/__init__.py0
-rw-r--r--tools/project.py18
-rw-r--r--tools/upload_progress.py79
3 files changed, 88 insertions, 9 deletions
diff --git a/tools/__init__.py b/tools/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tools/__init__.py
diff --git a/tools/project.py b/tools/project.py
index 4e2263d0..15795f1f 100644
--- a/tools/project.py
+++ b/tools/project.py
@@ -1030,20 +1030,20 @@ def generate_objdiff_config(
"GC/2.5": "mwcc_247_105",
"GC/2.6": "mwcc_247_107",
"GC/2.7": "mwcc_247_108",
- "GC/3.0": "mwcc_41_60831",
- # "GC/3.0a3": "mwcc_41_51213",
+ "GC/3.0a3": "mwcc_41_51213",
"GC/3.0a3.2": "mwcc_41_60126",
- # "GC/3.0a3.3": "mwcc_41_60209",
- # "GC/3.0a3.4": "mwcc_42_60308",
- # "GC/3.0a5": "mwcc_42_60422",
+ "GC/3.0a3.3": "mwcc_41_60209",
+ "GC/3.0a3.4": "mwcc_42_60308",
+ "GC/3.0a5": "mwcc_42_60422",
"GC/3.0a5.2": "mwcc_41_60831",
+ "GC/3.0": "mwcc_41_60831",
+ "Wii/1.0RC1": "mwcc_42_140",
"Wii/0x4201_127": "mwcc_42_142",
- # "Wii/1.0": "mwcc_43_145",
- # "Wii/1.0RC1": "mwcc_42_140",
"Wii/1.0a": "mwcc_42_142",
+ "Wii/1.0": "mwcc_43_145",
"Wii/1.1": "mwcc_43_151",
"Wii/1.3": "mwcc_43_172",
- # "Wii/1.5": "mwcc_43_188",
+ "Wii/1.5": "mwcc_43_188",
"Wii/1.6": "mwcc_43_202",
"Wii/1.7": "mwcc_43_213",
}
@@ -1235,7 +1235,7 @@ def calculate_progress(config: ProjectConfig) -> None:
print(f" Data: {unit.data_progress} / {unit.data_total} bytes")
if config.progress_use_fancy:
print(
- "\nYou have {} out of {} {} and collected {} out of {} {}.".format(
+ "\nYou have {} out of {} {} and {} out of {} {}.".format(
math.floor(code_frac * unit.code_fancy_frac),
unit.code_fancy_frac,
unit.code_fancy_item,
diff --git a/tools/upload_progress.py b/tools/upload_progress.py
new file mode 100644
index 00000000..dc61d156
--- /dev/null
+++ b/tools/upload_progress.py
@@ -0,0 +1,79 @@
+#!/usr/bin/env python3
+
+###
+# Uploads progress information to https://github.com/decompals/frogress.
+#
+# Usage:
+# python3 tools/upload_progress.py -b https://progress.decomp.club/ -p [project] -v [version] build/[version]/progress.json
+#
+# If changes are made, please submit a PR to
+# https://github.com/encounter/dtk-template
+###
+
+import argparse
+import json
+import os
+import requests
+import subprocess
+import sys
+
+
+def get_git_commit_timestamp() -> int:
+ return int(
+ subprocess.check_output(["git", "show", "-s", "--format=%ct"])
+ .decode("ascii")
+ .rstrip()
+ )
+
+
+def get_git_commit_sha() -> str:
+ return subprocess.check_output(["git", "rev-parse", "HEAD"]).decode("ascii").strip()
+
+
+def generate_url(args: argparse.Namespace) -> str:
+ url_components = [args.base_url.rstrip("/"), "data"]
+
+ for arg in [args.project, args.version]:
+ if arg != "":
+ url_components.append(arg)
+
+ return str.join("/", url_components) + "/"
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description="Upload progress information.")
+ parser.add_argument("-b", "--base_url", help="API base URL", required=True)
+ parser.add_argument("-a", "--api_key", help="API key (env var PROGRESS_API_KEY)")
+ parser.add_argument("-p", "--project", help="Project slug", required=True)
+ parser.add_argument("-v", "--version", help="Version slug", required=True)
+ parser.add_argument("input", help="Progress JSON input")
+
+ args = parser.parse_args()
+ api_key = args.api_key or os.environ.get("PROGRESS_API_KEY")
+ if not api_key:
+ raise KeyError("API key required")
+ url = generate_url(args)
+
+ entries = []
+ with open(args.input, "r") as f:
+ data = json.load(f)
+ entries.append(
+ {
+ "timestamp": get_git_commit_timestamp(),
+ "git_hash": get_git_commit_sha(),
+ "categories": data,
+ }
+ )
+
+ print("Publishing entry to", url)
+ json.dump(entries[0], sys.stdout, indent=4)
+ print()
+ r = requests.post(
+ url,
+ json={
+ "api_key": api_key,
+ "entries": entries,
+ },
+ )
+ r.raise_for_status()
+ print("Done!")