39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import json
|
|
import subprocess
|
|
import typing as t
|
|
from tempfile import NamedTemporaryFile
|
|
|
|
import click
|
|
|
|
|
|
@click.command(
|
|
context_settings={"show_default": True, "help_option_names": ["-h", "--help"]}
|
|
)
|
|
@click.argument("v1_json", required=True, type=click.File())
|
|
@click.argument("v2_depsolve_result_json", required=True, type=click.File())
|
|
def main(v1_json: t.IO[str], v2_depsolve_result_json: t.IO[str]) -> None:
|
|
with v1_json, v2_depsolve_result_json:
|
|
v1 = json.load(v1_json)
|
|
v2 = json.load(v2_depsolve_result_json)
|
|
|
|
v1_affected_packages = set(v1["affected_packages"])
|
|
v1_orphans = set(v1["orphans"])
|
|
v1_affected_packages -= v1_orphans
|
|
v2_affected_packages = set(v2["affected_pkg_to_orphans"])
|
|
with (
|
|
NamedTemporaryFile("w", suffix=".v1") as v1_temp,
|
|
NamedTemporaryFile("w", suffix=".v2") as v2_temp,
|
|
):
|
|
for i in sorted(v1_affected_packages):
|
|
v1_temp.write(i + "\n")
|
|
for i in sorted(v2_affected_packages):
|
|
v2_temp.write(i + "\n")
|
|
v1_temp.flush()
|
|
v2_temp.flush()
|
|
subprocess.run(["diff", "--color=auto", "-u", v1_temp.name, v2_temp.name])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|