Files

56 lines
1.4 KiB
Python

import os
import shutil
import subprocess
import sys
import tarfile
from pathlib import Path
from typing import Optional
def main(argv: list[str]):
args = argv[1:]
strip_command = pop_cmd_array_arg(args)
strip_enabled = args.pop(0) == "true"
binding = Path(args.pop(0))
outfile = Path(args.pop(0))
intermediate_path = outfile.parent / f"{outfile.name}.tmp"
shutil.copy(binding, intermediate_path)
try:
if strip_enabled and strip_command is not None:
subprocess.run(
strip_command + [intermediate_path],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
encoding="utf-8",
check=True,
)
with tarfile.open(outfile, "w:gz") as tar:
tar.add(intermediate_path, arcname="build/frida_binding.node")
except subprocess.CalledProcessError as e:
print(e, file=sys.stderr)
print("Output:\n\t| " + "\n\t| ".join(e.output.strip().split("\n")), file=sys.stderr)
sys.exit(1)
finally:
os.unlink(intermediate_path)
def pop_cmd_array_arg(args: list[str]) -> Optional[list[str]]:
result = []
first = args.pop(0)
assert first == ">>>"
while True:
cur = args.pop(0)
if cur == "<<<":
break
result.append(cur)
if len(result) == 1 and not result[0]:
return None
return result
if __name__ == "__main__":
main(sys.argv)