* Move submodule to Godot * Update submodule AGAIN. * Update project files. * Remove WearableAnimatedSprite from prototypes. * Remove content repo resource copier. * Update submodule. * Fix resource handling. * Content.Client compiles by commenting out hands GUI. * Update submodule. * Fix prototype textures and update submodule. * Update Submodule. * Update submodule SOME MORE! * Random WiP shit I guess * Make omnisharp not choke on buildchecker. * Update submodule. * Highly WiP broken HandsGui code. * Ok maybe let's not insult omnisharp. * Fix annoying Omnisharp warning. * Update submodule. * Update submodule. * Hey I forgot to push this but it didn't conflict! * Fix hands GUI on godot. * Update submodule. * Obligatory submodule update. * Work on exports. * Work on exports. * Update submodule. * Update submodule. * Fix dumb case mismatch between content and engine * work pls. * This maybe. * Now! * Update submodule. * update submodule. * Some WiP work on exporting aaah. * OK READY FOR THE BUILDS SERVER. * Probably should've made those commits in a different order. * DO THE THING * update submodule. * Updates for effects system. * Update submodule. * Make file/line numbers show up on Windows Godot. * Set submodule to master.
97 lines
2.8 KiB
Python
97 lines
2.8 KiB
Python
#!/usr/bin/env python3
|
|
# Installs git hooks, updates them, updates submodules, that kind of thing.
|
|
|
|
import subprocess
|
|
import sys
|
|
import os
|
|
import shutil
|
|
from pathlib import Path
|
|
from typing import List
|
|
|
|
SOLUTION_PATH = Path("..") / "SpaceStation14Content.sln"
|
|
CURRENT_HOOKS_VERSION = "1" # If this doesn't match the saved version we overwrite them all.
|
|
QUIET = len(sys.argv) == 2 and sys.argv[1] == "--quiet"
|
|
|
|
def run_command(command: List[str], capture: bool = False) -> subprocess.CompletedProcess:
|
|
"""
|
|
Runs a command with pretty output.
|
|
"""
|
|
text = ' '.join(command)
|
|
if not QUIET:
|
|
print("$ {}".format(text))
|
|
|
|
sys.stdout.flush()
|
|
|
|
completed = None
|
|
|
|
if capture:
|
|
completed = subprocess.run(command, cwd="..", stdout=subprocess.PIPE)
|
|
else:
|
|
completed = subprocess.run(command, cwd="..")
|
|
|
|
if completed.returncode != 0:
|
|
print("Error: command exited with code {}!".format(completed.returncode))
|
|
|
|
return completed
|
|
|
|
|
|
def update_submodules():
|
|
"""
|
|
Updates all submodules.
|
|
"""
|
|
|
|
# If the status doesn't match, force VS to reload the solution.
|
|
# status = run_command(["git", "submodule", "status"], capture=True)
|
|
run_command(["git", "submodule", "update", "--init", "--recursive"])
|
|
# status2 = run_command(["git", "submodule", "status"], capture=True)
|
|
|
|
# Something changed.
|
|
# if status.stdout != status2.stdout:
|
|
# print("Git submodules changed. Reloading solution.")
|
|
# reset_solution()
|
|
|
|
def install_hooks():
|
|
"""
|
|
Installs the necessary git hooks into .git/hooks.
|
|
"""
|
|
|
|
# Read version file.
|
|
if os.path.isfile("INSTALLED_HOOKS_VERSION"):
|
|
with open("INSTALLED_HOOKS_VERSION", "r") as f:
|
|
if f.read() == CURRENT_HOOKS_VERSION:
|
|
if not QUIET:
|
|
print("No hooks change detected.")
|
|
return
|
|
|
|
with open("INSTALLED_HOOKS_VERSION", "w") as f:
|
|
f.write(CURRENT_HOOKS_VERSION)
|
|
|
|
print("Hooks need updating.")
|
|
|
|
hooks_target_dir = Path("..")/".git"/"hooks"
|
|
hooks_source_dir = Path("hooks")
|
|
|
|
# Clear entire tree since we need to kill deleted files too.
|
|
for filename in os.listdir(str(hooks_target_dir)):
|
|
os.remove(str(hooks_target_dir/filename))
|
|
|
|
for filename in os.listdir(str(hooks_source_dir)):
|
|
print("Copying hook {}".format(filename))
|
|
shutil.copyfile(str(hooks_source_dir/filename), str(hooks_target_dir/filename))
|
|
|
|
|
|
def reset_solution():
|
|
"""
|
|
Force VS to think the solution has been changed to prompt the user to reload it, thus fixing any load errors.
|
|
"""
|
|
|
|
with SOLUTION_PATH.open("r") as f:
|
|
content = f.read()
|
|
|
|
with SOLUTION_PATH.open("w") as f:
|
|
f.write(content)
|
|
|
|
#if __name__ == '__main__':
|
|
# install_hooks()
|
|
# update_submodules()
|