#!/usr/bin/env python """Generate annotated_java_files.bp from a jaif file.""" import os PACKAGE_STRING = 'package ' CLASS_STRING = 'class ' SRC_PREFIX = 'ojluni/src/main/java/' BP_TEMPLATE = '''filegroup { name: "annotated_ojluni_files", export_to_make_var: "annotated_ojluni_files", srcs: [ %s ], }''' srcs_list = set() current_package = None with open(os.sys.argv[1], 'r') as jaif_file: for line in jaif_file: if line.startswith(PACKAGE_STRING): current_package = line[len(PACKAGE_STRING): line.find(':')] if line.startswith(CLASS_STRING) and current_package is not None: current_class = line[len(CLASS_STRING): line.find(':')] # In case of nested classes, discard substring after nested class name separator nested_class_separator_index = current_class.find('$') if nested_class_separator_index != -1: current_class = current_class[:nested_class_separator_index] srcs_list.add(SRC_PREFIX + current_package.replace('.', '/') + '/' + current_class + '.java') print '// Do not edit; generated using libcore/annotations/generate_annotated_java_files.py' print BP_TEMPLATE % ('\n'.join([' "' + src_entry + '",' for src_entry in sorted(srcs_list)]),) os.sys.exit(0)