123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- """Produces C++ file with sorted array of UMA User Actions strings."""
- import argparse
- import sys
- import os
- from xml.etree import ElementTree
- def not_user_triggered_actions(actions_file_path):
- """Generates list of not-user triggered and non-obsolete UMA User Actions.
- Args:
- actions_file_path: path to actions.xml file
- """
- actions = ElementTree.parse(actions_file_path).getroot()
- for action in actions:
- if action.find('obsolete') is not None:
- continue
- if action.attrib.get('not_user_triggered') == 'true':
- yield action.attrib['name']
- def main(actions_file_path, output_file_path):
- """Produces C++ file with sorted array of UMA User Actions strings.
- Array is a global kNotUserTriggeredActions constant in anonymous namespace.
- Args:
- actions_file_path: path to actions.xml file
- output_file_path: path to output C++ file
- """
- actions = not_user_triggered_actions(actions_file_path)
- if not actions:
- sys.stderr.write(
- 'There are no not-user triggered and non-obsolete in %s',
- actions_file_path)
- return -1
- with open(output_file_path ,'w') as output_file:
- output_file.write('// Generated by %s\n' % sys.argv[0])
- output_file.write('namespace {\n')
- output_file.write('const char* const kNotUserTriggeredActions[] = {\n')
- for action in sorted(actions):
- output_file.write(' "%s",\n' % action)
- output_file.write('};\n')
- output_file.write('} // namespace\n')
- if __name__ == '__main__':
- parser = argparse.ArgumentParser(description=__doc__)
- parser.add_argument(
- '-a',
- '--actions',
- help='path to actions.xml file')
- parser.add_argument(
- '-o',
- '--output',
- help='path to output source file')
- args = parser.parse_args()
- sys.exit(main(args.actions, args.output))
|