Skip to content

Commit

Permalink
Allow configuring gen_build_info.py through environment variables (sp…
Browse files Browse the repository at this point in the history
…ace-wizards#25162)

This makes the life of forks slightly easier by letting you pass an
environment variable instead of having to maintain this file yourself.
  • Loading branch information
deepy authored Feb 12, 2024
1 parent 043423b commit 163e6d2
Showing 1 changed file with 15 additions and 7 deletions.
22 changes: 15 additions & 7 deletions Tools/gen_build_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@
"SS14.Server_osx-x64.zip"
]

VERSION = os.environ['GITHUB_SHA']
FORK_ID = "wizards"
BUILD_URL = f"https://cdn.centcomm.spacestation14.com/builds/wizards/builds/{{FORK_VERSION}}/{FILE}"
MANIFEST_URL = f"https://cdn.centcomm.spacestation14.com/cdn/version/{{FORK_VERSION}}/manifest"
MANIFEST_DOWNLOAD_URL = f"https://cdn.centcomm.spacestation14.com/cdn/version/{{FORK_VERSION}}/download"
FORK_ID = os.environ.get("CDN_FORK_ID", "wizards")
HOSTNAME = os.environ.get("CDN_HOSTNAME", "cdn.centcomm.spacestation14.com")
BUILD_URL = f"https://{HOSTNAME}/builds/{FORK_ID}/builds/{{FORK_VERSION}}/{FILE}"
MANIFEST_URL = f"https://{HOSTNAME}/version/{{FORK_VERSION}}/manifest"
MANIFEST_DOWNLOAD_URL = f"https://{HOSTNAME}/version/{{FORK_VERSION}}/download"

def main() -> None:
client_file = os.path.join("release", FILE)
Expand All @@ -38,24 +38,33 @@ def inject_manifest(zip_path: str, manifest: str) -> None:
z.writestr("build.json", manifest)


def get_git_sha() -> str:
proc = subprocess.run(["git", "rev-parse", "HEAD"], stdout=subprocess.PIPE, check=True, encoding="UTF-8")
tag = proc.stdout.strip()
return tag

def generate_build_json(file: str) -> str:
# Env variables set by Jenkins.

hash = sha256_file(file)
engine_version = get_engine_version()
manifest_hash = generate_manifest_hash(file)
version = os.environ.get("GITHUB_SHA")
if not version:
version = get_git_sha()

return json.dumps({
"download": BUILD_URL,
"hash": hash,
"version": VERSION,
"version": version,
"fork_id": FORK_ID,
"engine_version": engine_version,
"manifest_url": MANIFEST_URL,
"manifest_download_url": MANIFEST_DOWNLOAD_URL,
"manifest_hash": manifest_hash
})


def generate_manifest_hash(file: str) -> str:
zip = ZipFile(file)
infos = zip.infolist()
Expand Down Expand Up @@ -83,7 +92,6 @@ def get_engine_version() -> str:
assert tag.startswith("v")
return tag[1:] # Cut off v prefix.


def sha256_file(path: str) -> str:
with open(path, "rb") as f:
h = hashlib.sha256()
Expand Down

0 comments on commit 163e6d2

Please sign in to comment.