blob: 3b18ec8c6f7f6afe8d9e496fac2a4aa80d43726b [file] [log] [blame] [edit]
"""Script to expand capabilities into products.
Example usage:
python $0 --capability_list='CAST_AUDIO_RECEIVER,CAST_VIDEO_RECEIVER'
"""
import argparse
import os
from catatester.genfiles import build_config_pb2
from google.protobuf import text_format
BUILD_CONFIG = os.path.join(os.path.dirname(__file__),
'configs',
'imported',
'build_config.protoascii')
def ParseCmdOptions():
"""Parses command arguments."""
parser = argparse.ArgumentParser()
parser.add_argument('--capability_list',
help='Comma-delimited capabilities',
required=True)
return parser.parse_args()
def GetProductsByCapability(capability):
"""Returns set of products with the given capability."""
print('Capability name: {}'.format(capability))
product_set = set()
try:
capability_index = (
build_config_pb2.OtaBuild.Capability.Value(capability))
print('Capability Index: {}'.format(capability_index))
except ValueError:
return product_set
with open(BUILD_CONFIG) as build:
builds = text_format.Merge(build.read(), build_config_pb2.BuildConfig())
assert builds
for target in builds.ota_build:
build_target = builds.ota_build[target]
if build_target.capabilities:
if capability_index in list(build_target.capabilities):
product_set.add(build_target.product)
return product_set
def main():
assert os.path.isfile(BUILD_CONFIG)
flags = ParseCmdOptions()
total_product_set = set()
for cap in flags.capability_list.split(','):
total_product_set.update(GetProductsByCapability(cap))
print('All products: {}'.format(sorted(total_product_set)))
if __name__ == '__main__':
main()