import argparse
import subprocess
def get_actual_version():
return subprocess.run(
["xcodebuild", "-version"], check=True, capture_output=True, encoding="utf8"
).stdout.split("\n")[0]
def get_expected_version():
with open(".xcode-version", "r") as file:
return file.read().rstrip()
def without_patch_version(value):
components = value.split(".")
return ".".join(components[:2])
def main():
parser = argparse.ArgumentParser()
parser.add_argument(
"--relaxed", action="store_true", help="ignore patch version when comparing"
)
ns = parser.parse_args()
actual_version = get_actual_version()
expected_version = get_expected_version()
if ns.relaxed:
actual_version = without_patch_version(actual_version)
expected_version = without_patch_version(expected_version)
if actual_version != expected_version:
print(
f"You’re using {actual_version} but you should be using {expected_version}."
)
exit(1)
if __name__ == "__main__":
main()