models.py 614 B

1234567891011121314151617181920212223
  1. from __future__ import annotations
  2. from dataclasses import dataclass
  3. from typing_extensions import Literal
  4. from .color_util import AnsiMode
  5. from .constants import CONFIG_PATH
  6. from .neofetch_util import ColorAlignment
  7. from .serializer import json_stringify
  8. @dataclass
  9. class Config:
  10. preset: str
  11. mode: AnsiMode
  12. light_dark: Literal['light', 'dark'] = 'dark'
  13. lightness: float | None = None
  14. color_align: ColorAlignment = ColorAlignment('horizontal')
  15. def save(self):
  16. CONFIG_PATH.parent.mkdir(exist_ok=True, parents=True)
  17. CONFIG_PATH.write_text(json_stringify(self), 'utf-8')