jack1142 af859aa755 [Downloader] Move author key handling to RepoJSONMixin, fix NameError (#3285)
* 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.
2020-01-08 13:08:55 -05:00

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")