diff options
author | svidyuk <svidyuk@yandex-team.com> | 2025-01-16 06:20:41 +0300 |
---|---|---|
committer | svidyuk <svidyuk@yandex-team.com> | 2025-01-16 06:37:38 +0300 |
commit | f18e22b0bf82b06a01768562df223082b86c6d01 (patch) | |
tree | 6499de3b49e016da372488f00ef1522cc35baa32 | |
parent | 96a6bd3bf87c39c8257a86654f45eabf6546a778 (diff) | |
download | ydb-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.py | 137 |
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: |