#!/usr/bin/env python3 # encoding: utf-8 import argparse import sys from typing import Any, Dict, Iterable, List, Tuple from webkitpy import mach_o def main(args: List[str]): parser = argparse.ArgumentParser() parser.add_argument("binary") parser.add_argument("variables", nargs="+") options = parser.parse_args(args) with open(options.binary, "r+b") as binary_file: mach_o_file = mach_o.MachOFile(binary_file) for mach_o_header in mach_o_file.headers: mach_o_header.filter_commands(lambda command: not isinstance(command, mach_o.MachODyldEnvironmentCommand)) for variable_pair in options.variables: mach_o_header.commands.append(mach_o.MachODyldEnvironmentCommand.build(variable_pair)) mach_o_header.update_file(binary_file) return 0 if __name__ == '__main__': sys.exit(main(sys.argv[1:]))