Source code for runway.cfngin.lookups.handlers.default
"""Lookup to provide a default value."""from__future__importannotationsfromtypingimportTYPE_CHECKING,Any,ClassVarfrom....lookups.handlers.baseimportLookupHandlerifTYPE_CHECKING:from....contextimportCfnginContext
[docs]classDefaultLookup(LookupHandler["CfnginContext"]):"""Lookup to provide a default value."""TYPE_NAME:ClassVar[str]="default""""Name that the Lookup is registered as."""
[docs]@classmethoddefhandle(cls,value:str,context:CfnginContext|None=None,**_:Any)->Any:"""Use a value from the environment or fall back to a default value. Allows defaults to be set at the config file level. Args: value: Parameter(s) given to this lookup. ``<env_var>::<default value>`` context: Context instance. Example: :: Groups: ${default app_security_groups::sg-12345,sg-67890} If ``app_security_groups`` is defined in the environment, its defined value will be returned. Otherwise, ``sg-12345,sg-67890`` will be the returned value. """try:env_var_name,default_val=value.split("::",1)exceptValueError:raiseValueError(f"Invalid value for default: {value}. Must be in <env_var>::<default value> format.")fromNoneifcontextandenv_var_nameincontext.parameters:returncontext.parameters[env_var_name]returndefault_val