mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-06 11:18:54 -05:00
* Update downloader.py * Update json_mixins.py * Update installable.py * changelog pt 1 * changelog pt2 * edit of changelog pt1 * edit of changelog pt 2 (last commit before review) * Kidding, this is the last one before review.
44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
import json
|
|
from pathlib import Path
|
|
from typing import Optional, Tuple, Dict, Any
|
|
|
|
|
|
class RepoJSONMixin:
|
|
INFO_FILE_NAME = "info.json"
|
|
|
|
def __init__(self, repo_folder: Path):
|
|
self._repo_folder = repo_folder
|
|
|
|
self.author: Tuple[str, ...] = ()
|
|
self.install_msg: Optional[str] = None
|
|
self.short: Optional[str] = None
|
|
self.description: Optional[str] = None
|
|
|
|
self._info_file = repo_folder / self.INFO_FILE_NAME
|
|
if self._info_file.exists():
|
|
self._read_info_file()
|
|
|
|
self._info: Dict[str, Any] = {}
|
|
|
|
def _read_info_file(self) -> None:
|
|
if not (self._info_file.exists() or self._info_file.is_file()):
|
|
return
|
|
|
|
try:
|
|
with self._info_file.open(encoding="utf-8") as f:
|
|
info = json.load(f)
|
|
except json.JSONDecodeError:
|
|
return
|
|
else:
|
|
self._info = info
|
|
|
|
try:
|
|
author = tuple(info.get("author", []))
|
|
except ValueError:
|
|
author = ()
|
|
self.author = author
|
|
|
|
self.install_msg = info.get("install_msg")
|
|
self.short = info.get("short")
|
|
self.description = info.get("description")
|