validator: hostname init
This commit is contained in:
30
pkgs/clan-cli/clan_lib/validator/hostname.py
Normal file
30
pkgs/clan-cli/clan_lib/validator/hostname.py
Normal file
@@ -0,0 +1,30 @@
|
||||
import re
|
||||
|
||||
from clan_lib.errors import ClanError
|
||||
|
||||
|
||||
def hostname(host: str) -> str:
|
||||
"""
|
||||
Validates a hostname according to the expected format in NixOS.
|
||||
|
||||
Usage Example
|
||||
|
||||
@dataclass
|
||||
class Clan:
|
||||
name: str
|
||||
|
||||
def validate(self) -> None:
|
||||
from clan_lib.validator.hostname import hostname
|
||||
try:
|
||||
hostname(self.name)
|
||||
except ValueError as e:
|
||||
raise ClanError(str(e), location="name")
|
||||
"""
|
||||
|
||||
# TODO: Generate from nix schema
|
||||
hostname_regex = r"^(?!-)[A-Za-z0-9-]{1,63}(?<!-)$"
|
||||
if not re.fullmatch(hostname_regex, host):
|
||||
msg = "Machine name must be a valid hostname"
|
||||
raise ClanError(msg, location="Create Machine")
|
||||
|
||||
return host
|
||||
Reference in New Issue
Block a user