You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iceraven-browser/tools/update-glean-tags.py

60 lines
1.8 KiB
Python

#!/usr/bin/env python3
"""
Scrapes GitHub labels for Fenix and generates a set of glean tags for use in metrics
See https://mozilla.github.io/glean/book/reference/yaml/tags.html
"""
import urllib
from pathlib import Path
import requests
import yaml
LICENSE_HEADER = """# 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/.
"""
GENERATED_HEADER = """
### This file was AUTOMATICALLY GENERATED by `./tools/update-glean-tags.py`
### DO NOT edit it by hand.
# Disable line-length rule because the links in the descriptions can be long
# yamllint disable rule:line-length
"""
TAGS_FILENAME = (Path(__file__).parent / "../app/tags.yaml").resolve()
labels = []
page = 1
while True:
more_labels = requests.get(
f"https://api.github.com/repos/mozilla-mobile/fenix/labels?per_page=100&page={page}"
).json()
if not more_labels:
break
labels += more_labels
page += 1
tags = {"$schema": "moz://mozilla.org/schemas/glean/tags/1-0-0"}
for label in labels:
if label["name"].startswith("Feature:"):
abbreviated_label = label["name"].replace("Feature:", "")
url = (
"https://github.com/mozilla-mobile/fenix/issues?q="
+ urllib.parse.quote_plus(f"label:{label['name']}")
)
label_description = (
(label["description"].strip() + ". ") if len(label["description"]) else ""
)
tags[abbreviated_label] = {
"description": f"{label_description}Corresponds to the [{label['name']}]({url}) label on GitHub."
}
open(TAGS_FILENAME, "w").write(
"{}\n{}\n\n".format(LICENSE_HEADER, GENERATED_HEADER)
+ yaml.dump(tags, width=78, explicit_start=True)
)