models.py 775 B

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