#!/usr/bin/env python3 # # Copyright (C) 2016 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the 'License'); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an 'AS IS' BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import json import os import sys def main(): try: product_out = os.environ["ANDROID_PRODUCT_OUT"] except KeyError: sys.stderr.write("Can't get ANDROID_PRODUCT_OUT. Run lunch first.\n") sys.exit(1) filename = os.path.join(product_out, "module-info.json") try: with open(filename) as f: modules = json.load(f) except FileNotFoundError: sys.stderr.write(f"File not found: {filename}\n") sys.exit(1) except json.JSONDecodeError: sys.stderr.write(f"Invalid json: {filename}\n") return None classes = {} for name, info in modules.items(): make = info.get("make") make_gen = info.get("make_generated_module_info") if not make and make_gen: classes.setdefault(frozenset(info.get("class")), []).append(name) for cl, names in classes.items(): print(" ".join(cl)) for name in names: print(" ", name) if __name__ == "__main__": main()