Source code

Revision control

Copy as Markdown

Other Tools

# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# This file should only contain code that will be acceptable in the context of
# a moz.build sandbox.
# This function turns a metrics.yaml path (eg. "dom/push/metrics.yaml") into a
# header file name (eg. "DomPushMetrics").
# Used by both moz.build and build_scripts/glean_parser_ext/run_glean_parser.py
def convert_yaml_path_to_header_name(filepath):
# The general rule is to remove the yaml extension then add an
# upper case letter for each folder separator, - or _ character .
filepath = filepath[: -(len(".yaml"))]
path_components = filepath.replace("-", "_").split("/")
# There are some exceptions to make some names shorter nicer:
# NameBaseMetrics -> NameMetrics
# NameBaseSomethingMetrics -> NameSomethingMetrics
if path_components[1] == "base":
path_components.pop(1)
# NameComponentsSomethingMetrics -> NameSomethingMetrics
# BrowserComponentsSomethingMetrics -> SomethingMetrics
# ToolkitComponentsSomethingMetrics -> SomethingMetrics
if len(path_components) > 3 and path_components[1] == "components":
path_components.pop(1)
if path_components[0] in ["browser", "toolkit"]:
path_components.pop(0)
# ModulesSomethingMetrics -> SomethingMetrics
if len(path_components) > 2 and path_components[0] == "modules":
path_components.pop(0)
# MobileSharedModulesGeckoviewMetrics -> GeckoviewMetrics
if filepath.startswith("mobile/shared/modules/") and len(path_components) > 4:
path_components = ["geckoview", "metrics"]
path_components = "_".join(path_components).split("_")
return "".join(
[
path_component[0].upper() + path_component[1:]
for path_component in path_components
]
)