blob: 6f97fccfccb3076f99df3a326aac6fcf4a9b1d97 [file] [log] [blame]
#!/usr/bin/env python3
# Copyright 2023 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.
import os
import sys
from typing import Optional
_THIS_DIR = os.path.abspath(os.path.dirname(__file__))
# The repo's root directory.
_ROOT_DIR = os.path.abspath(os.path.join(_THIS_DIR, "..", ".."))
# Add the repo's root directory for clearer imports.
sys.path.insert(0, _ROOT_DIR)
import metadata.fields.custom.cpe_prefix
import metadata.fields.custom.date
import metadata.fields.custom.license
import metadata.fields.custom.license_file
import metadata.fields.custom.local_modifications
import metadata.fields.custom.url
import metadata.fields.custom.version
import metadata.fields.custom.revision
import metadata.fields.field_types as field_types
# Freeform text fields.
NAME = field_types.SingleLineTextField("Name")
SHORT_NAME = field_types.SingleLineTextField("Short Name")
DESCRIPTION = field_types.FreeformTextField("Description", structured=False)
# Yes/no fields.
SECURITY_CRITICAL = field_types.YesNoField("Security Critical")
SHIPPED = field_types.YesNoField("Shipped")
SHIPPED_IN_CHROMIUM = field_types.YesNoField("Shipped in Chromium")
LICENSE_ANDROID_COMPATIBLE = field_types.YesNoField(
"License Android Compatible")
# Custom fields.
CPE_PREFIX = metadata.fields.custom.cpe_prefix.CPEPrefixField()
DATE = metadata.fields.custom.date.DateField()
LICENSE = metadata.fields.custom.license.LicenseField()
LICENSE_FILE = metadata.fields.custom.license_file.LicenseFileField()
URL = metadata.fields.custom.url.URLField()
VERSION = metadata.fields.custom.version.VersionField()
REVISION = metadata.fields.custom.revision.RevisionField()
LOCAL_MODIFICATIONS = metadata.fields.custom.local_modifications.LocalModificationsField(
)
ALL_FIELDS = (
NAME,
SHORT_NAME,
URL,
VERSION,
DATE,
REVISION,
LICENSE,
LICENSE_FILE,
SECURITY_CRITICAL,
SHIPPED,
SHIPPED_IN_CHROMIUM,
LICENSE_ANDROID_COMPATIBLE,
CPE_PREFIX,
DESCRIPTION,
LOCAL_MODIFICATIONS,
)
ALL_FIELD_NAMES = {field.get_name() for field in ALL_FIELDS}
_FIELD_MAPPING = {field.get_name().lower(): field for field in ALL_FIELDS}
def get_field(label: str) -> Optional[field_types.MetadataField]:
return _FIELD_MAPPING.get(label.lower())