diff options
author | snermolaev <snermolaev@yandex-team.com> | 2024-08-07 07:41:10 +0300 |
---|---|---|
committer | snermolaev <snermolaev@yandex-team.com> | 2024-08-07 07:55:09 +0300 |
commit | e9b0eaca4af5c9b51f48af4f8a24b5483b1e1fde (patch) | |
tree | f92737304b4dfb99e912b03124719e1558be9ef2 /build/scripts/collect_rawproto.py | |
parent | 0e66090a90e6a55094d0f535599682b4adc04046 (diff) | |
download | ydb-e9b0eaca4af5c9b51f48af4f8a24b5483b1e1fde.tar.gz |
collect .proto files by PROTO_DESCRIPTIONS
479e79ff20f8b8551bc8a5505eb740dc61e7a854
Diffstat (limited to 'build/scripts/collect_rawproto.py')
-rw-r--r-- | build/scripts/collect_rawproto.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/build/scripts/collect_rawproto.py b/build/scripts/collect_rawproto.py new file mode 100644 index 0000000000..92086b4f77 --- /dev/null +++ b/build/scripts/collect_rawproto.py @@ -0,0 +1,37 @@ +import argparse +import os +import tarfile +import stat +import sys + + +def parse_args(): + parser = argparse.ArgumentParser() + parser.add_argument('--output', required=True) + parser.add_argument('args', nargs='*') + return parser.parse_args() + + +def main(args): + rawprotos = args.args + with tarfile.open(args.output, 'w') as fout: + for rawproto in sorted(os.path.normpath(r).replace('\\', '/') for r in rawprotos): + assert rawproto.endswith('.rawproto') + arcname = os.path.splitext(rawproto[:-len('.rawproto')])[0] + with open(rawproto, 'rb') as fin: + tarinfo = fout.gettarinfo(rawproto, arcname) + tarinfo.mode = stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH if tarinfo.mode | stat.S_IXUSR else 0 + tarinfo.mode = ( + tarinfo.mode | stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IWGRP | stat.S_IROTH + ) + tarinfo.mtime = 0 + tarinfo.uid = 0 + tarinfo.gid = 0 + tarinfo.uname = 'dummy' + tarinfo.gname = 'dummy' + fout.addfile(tarinfo, fin) + return 0 + + +if __name__ == '__main__': + sys.exit(main(parse_args())) |