import os import sys import argparse import process_command_files as pcf import java_pack_to_file as jcov def writelines(f, rng): f.writelines(item + '\n' for item in rng) def add_rel_src_to_coverage(coverage, src, source_root): rel = os.path.relpath(src, source_root) if not rel.startswith('..' + os.path.sep): coverage.append(rel) def main(): args = pcf.get_args(sys.argv[1:]) parser = argparse.ArgumentParser() parser.add_argument('--moddir') parser.add_argument('--java') parser.add_argument('--groovy') parser.add_argument('--kotlin') parser.add_argument('--coverage') parser.add_argument('--source-root') args, remaining_args = parser.parse_known_args(args) java = [] kotlin = [] groovy = [] 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 if src.endswith(".java"): java.append(src) kotlin.append(src) if args.coverage and args.source_root: add_rel_src_to_coverage(coverage, src, args.source_root) elif args.kotlin and src.endswith(".kt"): kotlin.append(src) if args.coverage and args.source_root: add_rel_src_to_coverage(coverage, src, args.source_root) elif args.groovy and src.endswith(".groovy"): groovy.append(src) 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) if args.java: with open(args.java, 'w') as f: writelines(f, java) if args.kotlin: with open(args.kotlin, 'w') as f: writelines(f, kotlin) if args.groovy: with open(args.groovy, 'w') as f: writelines(f, groovy) if args.coverage: jcov.write_coverage_sources(args.coverage, args.source_root, coverage) return 0 if __name__ == '__main__': sys.exit(main())