aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsvidyuk <svidyuk@yandex-team.com>2025-01-16 06:20:41 +0300
committersvidyuk <svidyuk@yandex-team.com>2025-01-16 06:37:38 +0300
commitf18e22b0bf82b06a01768562df223082b86c6d01 (patch)
tree6499de3b49e016da372488f00ef1522cc35baa32
parent96a6bd3bf87c39c8257a86654f45eabf6546a778 (diff)
downloadydb-f18e22b0bf82b06a01768562df223082b86c6d01.tar.gz
Extract stateful arg parsing from handling sources in make_java_srclist
This refactoring step is done to simplify work on support of '.jsrcs' in _JAR_LIBRARY which allows to use this module in the DLL_JAVA instead of EXTERNAL_JAVA_LIBRARY. commit_hash:27914cc84ed56605a25aa2643469503165b9c5da
-rw-r--r--build/scripts/make_java_srclists.py137
1 files changed, 73 insertions, 64 deletions
diff --git a/build/scripts/make_java_srclists.py b/build/scripts/make_java_srclists.py
index 97c80fb196..d08088ef57 100644
--- a/build/scripts/make_java_srclists.py
+++ b/build/scripts/make_java_srclists.py
@@ -13,6 +13,71 @@ def writelines(f, rng):
f.writelines(item + '\n' for item in rng)
+class SourcesSorter:
+ FILE_ARG = 1
+ RESOURCES_DIR_ARG = 2
+ SRCDIR_ARG = 3
+ JSOURCES_DIR_ARG = 4
+
+ def __init__(self, moddir):
+ self.moddir = moddir
+ self.next_arg = SourcesSorter.FILE_ARG
+
+ self.cur_resources_list_file = None
+ self.cur_jsources_list_file = None
+ self.cur_srcdir = None
+ self.cur_resources = []
+ self.cur_jsources = []
+
+ def sort_args(self, remaining_args):
+ for src in remaining_args:
+ if self.next_arg == SourcesSorter.RESOURCES_DIR_ARG:
+ assert self.cur_resources_list_file is None
+ self.cur_resources_list_file = src
+ self.next_arg = SourcesSorter.FILE_ARG
+ continue
+ elif self.next_arg == SourcesSorter.JSOURCES_DIR_ARG:
+ assert self.cur_jsources_list_file is None
+ self.cur_jsources_list_file = src
+ self.next_arg = SourcesSorter.FILE_ARG
+ continue
+ elif self.next_arg == SourcesSorter.SRCDIR_ARG:
+ assert self.cur_srcdir is None
+ self.cur_srcdir = src if os.path.isabs(src) else os.path.join(self.moddir, src)
+ self.next_arg = SourcesSorter.FILE_ARG
+ continue
+
+ if src == '--resources':
+ if self.cur_resources_list_file is not None:
+ with open(self.cur_resources_list_file, 'w') as f:
+ writelines(f, self.cur_resources)
+ self.cur_resources_list_file = None
+ self.cur_srcdir = None
+ self.cur_resources = []
+ self.next_arg = SourcesSorter.RESOURCES_DIR_ARG
+ continue
+ if src == '--jsources':
+ if self.cur_jsources_list_file is not None:
+ with open(self.cur_jsources_list_file, 'w') as f:
+ writelines(f, self.cur_jsources)
+ self.cur_jsources_list_file = None
+ self.cur_jsources = []
+ self.next_arg = SourcesSorter.JSOURCES_DIR_ARG
+ continue
+ elif src == '--srcdir':
+ self.next_arg = SourcesSorter.SRCDIR_ARG
+ continue
+
+ yield src
+
+ if self.cur_resources_list_file is not None:
+ with open(self.cur_resources_list_file, 'w') as f:
+ writelines(f, self.cur_resources)
+ if self.cur_jsources_list_file is not None:
+ with open(self.cur_jsources_list_file, 'w') as f:
+ writelines(f, self.cur_jsources)
+
+
def add_rel_src_to_coverage(coverage, src, source_root):
rel = os.path.relpath(src, source_root)
if not rel.startswith('..' + os.path.sep):
@@ -33,36 +98,8 @@ def main():
kotlin = []
coverage = []
- cur_resources_list_file = None
- cur_jsources_list_file = None
- cur_srcdir = None
- cur_resources = []
- cur_jsources = []
-
- FILE_ARG = 1
- RESOURCES_DIR_ARG = 2
- SRCDIR_ARG = 3
- JSOURCES_DIR_ARG = 4
-
- next_arg = FILE_ARG
-
- for src in remaining_args:
- if next_arg == RESOURCES_DIR_ARG:
- assert cur_resources_list_file is None
- cur_resources_list_file = src
- next_arg = FILE_ARG
- continue
- elif next_arg == JSOURCES_DIR_ARG:
- assert cur_jsources_list_file is None
- cur_jsources_list_file = src
- next_arg = FILE_ARG
- continue
- elif next_arg == SRCDIR_ARG:
- assert cur_srcdir is None
- cur_srcdir = src if os.path.isabs(src) else os.path.join(args.moddir, src)
- next_arg = FILE_ARG
- continue
-
+ src_sorter = SourcesSorter(args.moddir)
+ for src in src_sorter.sort_args(remaining_args):
if src.endswith(".java"):
java.append(src)
kotlin.append(src)
@@ -73,40 +110,12 @@ def main():
if args.coverage and args.source_root:
add_rel_src_to_coverage(coverage, src, args.source_root)
else:
- if src == '--resources':
- if cur_resources_list_file is not None:
- with open(cur_resources_list_file, 'w') as f:
- writelines(f, cur_resources)
- cur_resources_list_file = None
- cur_srcdir = None
- cur_resources = []
- next_arg = RESOURCES_DIR_ARG
- continue
- if src == '--jsources':
- if cur_jsources_list_file is not None:
- with open(cur_jsources_list_file, 'w') as f:
- writelines(f, cur_jsources)
- cur_jsources_list_file = None
- cur_jsources = []
- next_arg = JSOURCES_DIR_ARG
- continue
- elif src == '--srcdir':
- next_arg = SRCDIR_ARG
- continue
- else:
- assert cur_srcdir is not None and cur_resources_list_file is not None
- cur_resources.append(os.path.relpath(src, cur_srcdir))
-
- if cur_jsources_list_file is not None:
- assert cur_srcdir is not None
- cur_jsources.append(os.path.relpath(src, cur_srcdir))
-
- if cur_resources_list_file is not None:
- with open(cur_resources_list_file, 'w') as f:
- writelines(f, cur_resources)
- if cur_jsources_list_file is not None:
- with open(cur_jsources_list_file, 'w') as f:
- writelines(f, cur_jsources)
+ assert src_sorter.cur_srcdir is not None and src_sorter.cur_resources_list_file is not None
+ src_sorter.cur_resources.append(os.path.relpath(src, src_sorter.cur_srcdir))
+
+ if src_sorter.cur_jsources_list_file is not None:
+ assert src_sorter.cur_srcdir is not None
+ src_sorter.cur_jsources.append(os.path.relpath(src, src_sorter.cur_srcdir))
if args.java:
with open(args.java, 'w') as f: