sync
This commit is contained in:
@@ -1,80 +1,106 @@
|
||||
from collections.abc import Iterator
|
||||
from dataclasses import dataclass, field
|
||||
from dataclasses import dataclass
|
||||
from typing import Callable, ClassVar, Self, final, override
|
||||
|
||||
from docker_compose.cfg.org_yaml import OrgDataYaml
|
||||
from docker_compose.cfg.record import Record, RecordCls, RecordName
|
||||
from docker_compose.cfg.replace import ReplaceDynamic, RecordCls
|
||||
|
||||
#
|
||||
# _ORG = "org"
|
||||
# _APP = "name"
|
||||
# Org = partial(Record, ORG)
|
||||
# App = partial(Record, APP)
|
||||
|
||||
|
||||
@final
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class OrgVal(RecordCls[str]):
|
||||
old: ClassVar[RecordName] = RecordName("org")
|
||||
class Org(RecordCls):
|
||||
rep: ClassVar[str] = "org"
|
||||
|
||||
|
||||
@final
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class Org:
|
||||
val: str
|
||||
replace: OrgVal = field(init=False)
|
||||
|
||||
def __post_init__(self) -> None:
|
||||
setter = super(Org, self).__setattr__
|
||||
setter("replace", OrgVal(self.val))
|
||||
class App(RecordCls):
|
||||
rep: ClassVar[str] = "name"
|
||||
|
||||
|
||||
@final
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class AppVal(RecordCls[str]):
|
||||
old: ClassVar[RecordName] = RecordName("name")
|
||||
|
||||
|
||||
@final
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class App:
|
||||
val: str
|
||||
replace: AppVal = field(init=False)
|
||||
|
||||
def __post_init__(self) -> None:
|
||||
setter = super(App, self).__setattr__
|
||||
setter("replace", AppVal(self.val))
|
||||
|
||||
|
||||
@final
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class UrlValNew:
|
||||
val: str | None
|
||||
class Url(RecordCls):
|
||||
rep: ClassVar[str] = "url"
|
||||
|
||||
@override
|
||||
def __str__(self) -> str:
|
||||
if not self.val:
|
||||
return ""
|
||||
return ".".join((self.val, "ccamper7", "net"))
|
||||
@classmethod
|
||||
def from_str(cls, string: str | None) -> Self:
|
||||
return super(Url, cls).from_str(".".join((string, "ccamper7", "net")) if string else "")
|
||||
|
||||
# return Record("url", ".".join((val, "ccamper7", "net")) if val else "")
|
||||
|
||||
|
||||
@final
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class UrlVal(RecordCls[UrlValNew]):
|
||||
old = RecordName("url")
|
||||
#
|
||||
# @final
|
||||
# @dataclass(frozen=True, slots=True)
|
||||
# class Org:
|
||||
# val: str
|
||||
# replace: Record = field(init=False)
|
||||
#
|
||||
# def __post_init__(self) -> None:
|
||||
# setter = super(Org, self).__setattr__
|
||||
# setter("replace", OrgVal(self.val))
|
||||
|
||||
|
||||
@final
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class Url:
|
||||
val: str | None
|
||||
replace: UrlVal = field(init=False)
|
||||
# @final
|
||||
# @dataclass(frozen=True, slots=True)
|
||||
# class AppVal(RecordCls[str]):
|
||||
# old: ClassVar[RecordName] = RecordName("name")
|
||||
#
|
||||
#
|
||||
# @final
|
||||
# @dataclass(frozen=True, slots=True)
|
||||
# class App:
|
||||
# val: str
|
||||
# replace: AppVal = field(init=False)
|
||||
#
|
||||
# def __post_init__(self) -> None:
|
||||
# setter = super(App, self).__setattr__
|
||||
# setter("replace", AppVal(self.val))
|
||||
|
||||
def __post_init__(self) -> None:
|
||||
setter = super(Url, self).__setattr__
|
||||
setter("replace", UrlVal(UrlValNew(self.val)))
|
||||
|
||||
# @final
|
||||
# @dataclass(frozen=True, slots=True)
|
||||
# class UrlValNew:
|
||||
# val: str | None
|
||||
#
|
||||
# @override
|
||||
# def __str__(self) -> str:
|
||||
# if not self.val:
|
||||
# return ""
|
||||
# return ".".join((self.val, "ccamper7", "net"))
|
||||
#
|
||||
#
|
||||
# @final
|
||||
# @dataclass(frozen=True, slots=True)
|
||||
# class UrlVal(RecordCls[UrlValNew]):
|
||||
# old = RecordName("url")
|
||||
#
|
||||
#
|
||||
# @final
|
||||
# @dataclass(frozen=True, slots=True)
|
||||
# class Url:
|
||||
# val: str | None
|
||||
# replace: UrlVal = field(init=False)
|
||||
#
|
||||
# def __post_init__(self) -> None:
|
||||
# setter = super(Url, self).__setattr__
|
||||
# setter("replace", UrlVal(UrlValNew(self.val)))
|
||||
|
||||
|
||||
@final
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class OrgData:
|
||||
org_app = Record[RecordName, str](
|
||||
RecordName(f"{OrgVal.old.val}_{AppVal.old.val}"),
|
||||
f"{OrgVal.old!s}_{AppVal.old!s}",
|
||||
org_app = ReplaceDynamic(
|
||||
f"${Org.rep.upper()}_{Org.rep.upper()}",
|
||||
f"{ReplaceDynamic.get_format(Org.rep)}_{ReplaceDynamic.get_format(App.rep)}",
|
||||
)
|
||||
app: App
|
||||
org: Org
|
||||
@@ -83,16 +109,16 @@ class OrgData:
|
||||
@classmethod
|
||||
def from_dict(cls, app: str, org: str, data: OrgDataYaml) -> Self:
|
||||
return cls(
|
||||
App(app),
|
||||
Org(org),
|
||||
Url(data.get("url")),
|
||||
App.from_str(app),
|
||||
Org.from_str(org),
|
||||
Url.from_str(data.get("url")),
|
||||
)
|
||||
|
||||
@property
|
||||
def render_funcs(self) -> Iterator[Callable[[str], str]]:
|
||||
yield self.app.replace
|
||||
yield self.org.replace
|
||||
yield self.url.replace
|
||||
yield self.app
|
||||
yield self.org
|
||||
yield self.url
|
||||
|
||||
@property
|
||||
def pre_render_funcs(self) -> Iterator[Callable[[str], str]]:
|
||||
|
||||
Reference in New Issue
Block a user