106 lines
2.2 KiB
Python
106 lines
2.2 KiB
Python
from dataclasses import dataclass
|
|
from typing import Optional, List
|
|
from enum import Enum
|
|
|
|
from arcology.config import Environment as Env
|
|
from arcology.config import get_settings
|
|
|
|
@dataclass
|
|
class Site():
|
|
key: str
|
|
domains: dict[Env, List[str]]
|
|
title: str
|
|
css_file: Optional[str]
|
|
node_color: Optional[str]
|
|
|
|
def get_domains(self, env: Env = get_settings().arcology_env):
|
|
return self.domains.get(env, [])
|
|
|
|
sites = dict()
|
|
|
|
from functools import lru_cache
|
|
from typing import Optional
|
|
|
|
env = get_settings().arcology_env
|
|
|
|
@lru_cache(maxsize=16)
|
|
def host_to_site(host: str) -> Optional[Site]:
|
|
for site in sites.values():
|
|
domains = site.domains.get(env)
|
|
if domains is None:
|
|
raise Exception(f"no domains for site {site}+{env}?")
|
|
if host in domains:
|
|
return site
|
|
|
|
arcology = Site(
|
|
key="arcology",
|
|
domains={
|
|
Env.prod: ["engine.arcology.garden"],
|
|
Env.dev: ["engine.arcology.garden:8000"]
|
|
},
|
|
title="The Arcology Site Engine",
|
|
css_file=None,
|
|
node_color="#67b4f8"
|
|
)
|
|
sites["arcology"] = arcology
|
|
|
|
lionsrear = Site(
|
|
key="lionsrear",
|
|
domains={
|
|
Env.prod: ["thelionsrear.com"],
|
|
Env.dev: ["dev.thelionsrear.com:8000"]
|
|
},
|
|
title="The Lion's Rear",
|
|
css_file="/static/css/lionsrear.css",
|
|
node_color="#87af87"
|
|
)
|
|
sites["lionsrear"] = lionsrear
|
|
|
|
garden = Site(
|
|
key="garden",
|
|
domains={
|
|
Env.prod: ["arcology.garden"],
|
|
Env.dev: ["dev.arcology.garden:8000"]
|
|
},
|
|
title="The Arcology Garden",
|
|
css_file="/static/css/garden.css",
|
|
node_color="#a6dc68"
|
|
)
|
|
sites["garden"] = garden
|
|
|
|
cce = Site(
|
|
key="cce",
|
|
domains={
|
|
Env.prod: ["cce.whatthefuck.computer", "cce.rix.si"],
|
|
Env.dev: ["dev.cce"],
|
|
},
|
|
title="The Complete Computing Environment",
|
|
css_file="/static/css/cce.css",
|
|
node_color="#cc6960"
|
|
)
|
|
sites["cce"] = cce
|
|
|
|
doc = Site(
|
|
key="doc",
|
|
domains={
|
|
Env.prod: ["doc.rix.si"],
|
|
Env.dev: ["dev.topics"],
|
|
},
|
|
title="rrix's fact site",
|
|
css_file="/static/css/docsite.css",
|
|
node_color="#ebbe7b"
|
|
)
|
|
sites["doc"] = doc
|
|
|
|
local = Site(
|
|
key="local",
|
|
domains={
|
|
Env.prod: [],
|
|
Env.dev: ["localhost:8000"],
|
|
},
|
|
title="localhost",
|
|
css_file="/static/css/docsite.css",
|
|
node_color="#211F1C",
|
|
)
|
|
sites["local"] = local
|