diff options
author | Devtools Arcadia <arcadia-devtools@yandex-team.ru> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /build/plugins/_unpickler.py | |
download | ydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'build/plugins/_unpickler.py')
-rw-r--r-- | build/plugins/_unpickler.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/build/plugins/_unpickler.py b/build/plugins/_unpickler.py new file mode 100644 index 0000000000..e01e7b3118 --- /dev/null +++ b/build/plugins/_unpickler.py @@ -0,0 +1,42 @@ +import sys + +sys.dont_write_bytecode = True + +import argparse +import base64 +try: + import cPickle as pickle +except Exception: + import pickle + +import _common as common + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('--data', help='pickled object of TCustomCommand class', required=True) + parser.add_argument('--src-root', help='$S real path', required=True) + parser.add_argument('--build-root', help='$B real path', required=True) + parser.add_argument('--tools', help='binaries needed by command', required=True, nargs='+') + args, unknown_args = parser.parse_known_args() + + encoded_cmd = args.data + src_root = args.src_root + build_root = args.build_root + tools = args.tools + + assert (int(tools[0]) == len(tools[1:])), "tools quantity != tools number!" + + cmd_object = pickle.loads(base64.b64decode(encoded_cmd)) + + cmd_object.set_source_root(src_root) + cmd_object.set_build_root(build_root) + + if len(tools[1:]) == 0: + cmd_object.run(unknown_args, common.get_interpreter_path()) + else: + cmd_object.run(unknown_args, *tools[1:]) + + +if __name__ == '__main__': + main() |