move final legacy config to plugins and fix archivebox config cmd and add search opt

This commit is contained in:
Nick Sweeting
2024-10-21 02:56:00 -07:00
parent 115f89fd8b
commit b3107ab830
20 changed files with 379 additions and 275 deletions

View File

@@ -10,7 +10,7 @@ import toml
from rich import print
from benedict import benedict
from pydantic import model_validator, TypeAdapter
from pydantic import model_validator, TypeAdapter, AliasChoices
from pydantic_settings import BaseSettings, SettingsConfigDict, PydanticBaseSettingsSource
from pydantic_settings.sources import TomlConfigSettingsSource
@@ -247,6 +247,26 @@ class BaseConfigSet(BaseSettings):
return self
@property
def aliases(self) -> Dict[str, str]:
alias_map = {}
for key, field in self.model_fields.items():
alias_map[key] = key
if field.validation_alias is None:
continue
if isinstance(field.validation_alias, AliasChoices):
for alias in field.validation_alias.choices:
alias_map[alias] = key
elif isinstance(field.alias, str):
alias_map[field.alias] = key
else:
raise ValueError(f'Unknown alias type for field {key}: {field.alias}')
return benedict(alias_map)
@property
def toml_section_header(self):
"""Convert the class name to a TOML section header e.g. ShellConfig -> SHELL_CONFIG"""