1
0
Fork 0
mirror of https://github.com/yavook/kiwi-scp.git synced 2024-11-21 12:23:00 +00:00

remove need for kiwi_default.yml

This commit is contained in:
Jörn-Michael Miehe 2021-10-12 19:17:28 +02:00
parent af02c410e5
commit e42b426f2e
5 changed files with 32 additions and 36 deletions

View file

@ -2,17 +2,17 @@
# kiwi-scp instance configuration #
###################################
version: '0.1.7'
version: '0.2.0'
runtime:
storage: /tmp/kiwi
shells:
shells:
- /bin/bash
env: null
markers:
project: .project
disabled: .disabled
projects:
- name: hello-world.project
enabled: true
storage:
directory: /var/local/kiwi
network:
name: kiwi_hub

View file

@ -11,7 +11,7 @@ _RE_NUMBER: str = r"[0-9]|[1-9][0-9]*"
RE_SEMVER = rf"^{_RE_NUMBER}(?:\.{_RE_NUMBER}(?:\.{_RE_NUMBER})?)?$"
# regex for a lowercase variable name
RE_VARNAME = r"^[A-Za-z](?:[A-Za-z0-9_-]*[A-Za-z0-9])$"
RE_VARNAME = r"^[A-Za-z](?:[A-Za-z0-9\._-]*[A-Za-z0-9])$"
#############
# ENVIRONMENT

View file

@ -49,29 +49,35 @@ class _Project(BaseModel):
class _Network(BaseModel):
"""a network subsection"""
name: constr(
to_lower=True,
regex=RE_VARNAME
)
name: constr(to_lower=True, regex=RE_VARNAME)
cidr: IPv4Network
class Config(BaseModel):
"""represents a kiwi.yml"""
version: constr(
regex=RE_SEMVER
)
shells: Optional[List[str]]
environment: Optional[Dict[str, Optional[str]]]
version: constr(regex=RE_SEMVER) = "0.2.0"
shells: Optional[List[str]] = [
"/bin/bash",
]
environment: Dict[str, Optional[str]] = {}
projects: Optional[List[_Project]]
storage: _Storage
network: _Network
storage: _Storage = _Storage.parse_obj({
"directory": "/var/local/kiwi",
})
network: _Network = _Network.parse_obj({
"name": "kiwi_hub",
"cidr": "10.22.46.0/24",
})
@validator("environment", pre=True)
@classmethod
def unify_environment(cls, value) -> Optional[Dict[str, Optional[str]]]:
def unify_environment(cls, value) -> Dict[str, Optional[str]]:
"""parse different environment notations"""
def parse_str(var_val: str) -> (str, Optional[str]):
@ -87,7 +93,7 @@ class Config(BaseModel):
if value is None:
# empty environment
return None
return {}
elif isinstance(value, dict):
# native dict format

View file

@ -1,13 +0,0 @@
version: 0.2.0
shells:
- /bin/bash
projects:
- name: admin
enabled: true
- Test:
- test2: false
storage:
directory: /var/local/kiwi
network:
name: kiwi_hub
cidr: 10.22.46.0/24

View file

@ -3,12 +3,15 @@ import yaml
def main():
with open("./kiwi_scp/data/etc/kiwi_default.yml") as kc:
with open("./example/kiwi.yml") as kc:
yml = yaml.safe_load(kc)
kiwi = Config(**yml)
print(repr(kiwi))
kiwi = Config()
print(repr(kiwi))
if __name__ == "__main__":
main()