Source code for ssh2awsec2.config
# -*- coding: utf-8 -*-
import typing as T
import json
import dataclasses
from .paths import path_config
RECENT_CACHE_EXPIRE = 24 * 60 * 60 # 1 day
SSH_CMD_CACHE_EXPIRE = 24 * 60 * 60 # 1 day
[docs]@dataclasses.dataclass
class Config:
recent_cache_expire: int = dataclasses.field(default=RECENT_CACHE_EXPIRE)
ssh_cmd_cache_expire: int = dataclasses.field(default=SSH_CMD_CACHE_EXPIRE)
aws_profile: T.Optional[str] = dataclasses.field(default=None)
aws_region: T.Optional[str] = dataclasses.field(default=None)
@classmethod
def read(cls) -> "Config":
if path_config.exists():
data = {
k: v
for k, v in json.loads(path_config.read_text()).items()
if v is not None
}
return cls(**data)
else:
return cls()
def write(self):
path_config.write_text(json.dumps(dataclasses.asdict(self), indent=4))
def to_dict(self) -> dict:
return dataclasses.asdict(self)
def to_json(self) -> str:
return json.dumps(self.to_dict(), indent=4)