Source code for pkglts.option.license.option

import logging
from datetime import datetime
from pathlib import Path

from pkglts.option_object import Option
from pkglts.version import __version__

LOGGER = logging.getLogger(__name__)

TPL_DIR = Path(__file__).parent / "templates"


[docs] class OptionLicense(Option):
[docs] def version(self): return __version__
[docs] def root_dir(self): return Path(__file__).parent
[docs] def update_parameters(self, cfg): LOGGER.info("update parameters %s", self._name) sec = dict(name="cecill-c", year=datetime.now().year, organization="organization", project="{{ base.pkgname }}") cfg[self._name] = sec
[docs] def check(self, cfg): invalids = [] name = cfg[self._name]["name"] # year = pkg_cfg['license']['year'] # organization = pkg_cfg['license']['organization'] # project = pkg_cfg['license']['project'] if not name or not get_tpl_path(name).exists(): invalids.append("license.name") return invalids
[docs] def require_option(self, cfg): return ["base"]
[docs] def environment_extensions(self, cfg): return {"full_text": full_text(cfg)}
[docs] def get_tpl_path(name): """Return a path for license template file. Warnings: Do not test if path exists Args: name (str): name of license to fetch Returns: (str) """ return TPL_DIR / f"{name.lower()}.txt"
[docs] def full_text(cfg): """Generate a license""" name = cfg["license"]["name"] # open template try: with open(get_tpl_path(name), "r") as fhr: cnt = fhr.read() return cfg.render(cnt) except FileNotFoundError as err: LOGGER.error("unable to find template for given license") raise err