Files
tubestation/toolkit/components/resistfingerprinting/extract_rfp_targets.py
Fatih Kilic 73f4f01465 Bug 1939881: Implement RFPTargetBits and replace appropriate uses. r=tjr
This is a huge patch, but it is only really refactoring of RFPTarget enum. We used to use RFPTarget as a bitset and now we ran out of bits, so now we need a workaround.

Differential Revision: https://phabricator.services.mozilla.com/D233182
2025-01-23 14:49:44 +00:00

64 lines
1.7 KiB
Python

import re
from collections import defaultdict
def parse_defaults(path):
pattern = re.compile(r"(DESKTOP_DEFAULT|ANDROID_DEFAULT)\((.+)\)")
contents = ""
with open(path, "r") as f:
contents = f.read()
defaults = defaultdict(lambda: [])
for match in pattern.finditer(contents):
platform = match.group(1)
target = match.group(2)
defaults[platform].append(target)
return defaults
def write_defaults(output, defaults):
output.write("export const DefaultTargets = {\n")
for platform in defaults:
output.write(f'\t"{platform}": [')
for target in defaults[platform]:
output.write(f'"{target}",')
output.write("],\n")
output.write("}\n")
def parse_targets(path):
pattern = re.compile(r"ITEM_VALUE\((.+),[\s]+(.+)\)")
contents = ""
with open(path, "r") as f:
contents = f.read()
targets = {}
for match in pattern.finditer(contents):
target = match.group(1)
value = match.group(2)
targets[target] = value
return targets
def write_targets(output, targets):
output.write("export const Targets = {\n")
for target, value in targets.items():
target_w_padding = f'\t"{target}":'.ljust(45)
output.write(f"{target_w_padding} {value},\n")
output.write("}\n")
def main(output, targets_path, defaults_path):
output.write("// This is a generated file. Please do not edit.\n")
output.write(
"// See extract_rfp_targets.py, RFPTargets.inc, and RFPTargetsDefault.inc files instead.\n"
)
write_targets(output, parse_targets(targets_path))
output.write("\n")
write_defaults(output, parse_defaults(defaults_path))