def handle_list(args): logging.info( "System info for %s, %s" % (pegasus.__name__, pegasus.__version__) ) logging.info("") logging.info("-- (%i) Architectures --" % (len(Architecture.enum_keys))) for key in Architecture.enum_keys: logging.info("\t%s" % key) logging.info("") logging.info("-- (%i) Languages --" % (len(Language.enum_keys))) for key in Language.enum_keys: logging.info("\t%s" % key) logging.info("") logging.info( "-- (%i) Host Platforms --" % (len(HostPlatform.__subclasses__())) ) for d in HostPlatform.__subclasses__(): logging.info("\t%s" % d.__name__) logging.info("") logging.info( "-- (%i) Target Platforms --" % (len(TargetPlatform.__subclasses__())) ) for d in TargetPlatform.__subclasses__(): logging.info("\t%s" % d.__name__) logging.info("") logging.info("-- (%i) Compilers --" % (len(Compiler.__subclasses__()))) for d in Compiler.__subclasses__(): logging.info("\t%s" % d.__name__) logging.info("") logging.info("-- (%i) Drivers --" % (len(Core.driver_classes))) for d in Core.driver_classes: logging.info("\t%s" % d.__name__) logging.info("") buildfile = BuildFile(args.build_file) # need to mockup a parser here: parser = argparse.ArgumentParser() buildfile.execute("arguments", parser) args = parser.parse_args("") global_params = Attributes() products = buildfile.get_products( args=args, host_platform=HostPlatform, target_platform=TargetPlatform.instance, global_params=global_params ) if not products or type(products[0]) is not Product: raise Exception( "BuildFile returned an invalid value for products()!" ) logging.info( "Listing products for build file '%s' and platform '%s'" % \ (buildfile.abs_buildfile_path, HostPlatform.get()) ) logging.info("") logging.info("-- (%i) Products --" % len(products)) for p in products: logging.info("\t\"%s\": %s" % (p.name, p.output))