aboutsummaryrefslogtreecommitdiffstats
path: root/build/scripts/collect_rawproto.py
diff options
context:
space:
mode:
authorsnermolaev <snermolaev@yandex-team.com>2024-08-07 07:41:10 +0300
committersnermolaev <snermolaev@yandex-team.com>2024-08-07 07:55:09 +0300
commite9b0eaca4af5c9b51f48af4f8a24b5483b1e1fde (patch)
treef92737304b4dfb99e912b03124719e1558be9ef2 /build/scripts/collect_rawproto.py
parent0e66090a90e6a55094d0f535599682b4adc04046 (diff)
downloadydb-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.py37
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()))