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