models.py 774 B

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