Public Access
33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
"""Select affected game targets; docs and release tooling do not trigger game tests."""
|
|
import argparse
|
|
import json
|
|
import subprocess
|
|
|
|
|
|
def affected(paths):
|
|
targets = set()
|
|
for path in paths:
|
|
if path.startswith("src/main/java/") or path in {"build.gradle", "settings.gradle", "gradle.properties"}:
|
|
targets.add("mc1211")
|
|
if path.startswith("ports/mc263/") and not path.endswith(".md"):
|
|
targets.add("mc263")
|
|
if path.startswith(("src/main/resources/", "src/generated/", "buildSrc/", "gradle/")) or path in {"gradlew", "gradlew.bat"}:
|
|
targets.update(("mc1211", "mc263"))
|
|
return sorted(targets)
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description=__doc__)
|
|
parser.add_argument("--base", required=True)
|
|
args = parser.parse_args()
|
|
paths = subprocess.check_output(["git", "diff", "--name-only", args.base, "HEAD"], text=True).splitlines()
|
|
values = {"mc1211": ("21", "build"), "mc263": ("25", "-p ports/mc263 build")}
|
|
matrix = {"include": [{"target": target, "java": values[target][0], "gradle_args": values[target][1]}
|
|
for target in affected(paths)]}
|
|
print(json.dumps(matrix, separators=(",", ":")))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|