Source code for pyscaffold.extensions.cirrus

"""Extension that generates configuration for Cirrus CI."""
from argparse import ArgumentParser
from typing import List

from .. import structure
from ..actions import Action, ActionParams, ScaffoldOpts, Structure
from ..operations import no_overwrite
from ..templates import get_template
from . import Extension, include
from .pre_commit import PreCommit

TEMPLATE_FILE = "cirrus"


[docs]class Cirrus(Extension): """Add configuration file for Cirrus CI (includes `--pre-commit`)"""
[docs] def augment_cli(self, parser: ArgumentParser): """Augments the command-line interface parser. See :obj:`~pyscaffold.extension.Extension.augment_cli`. """ parser.add_argument( self.flag, help=self.help_text, nargs=0, action=include(PreCommit(), self) ) return self
[docs] def activate(self, actions: List[Action]) -> List[Action]: """Activate extension, see :obj:`~pyscaffold.extension.Extension.activate`.""" return self.register(actions, add_files, after="define_structure")
[docs]def add_files(struct: Structure, opts: ScaffoldOpts) -> ActionParams: """Add .cirrus.yml to the file structure Args: struct: project representation as (possibly) nested :obj:`dict`. opts: given options, see :obj:`create_project` for an extensive list. Returns: struct, opts: updated project representation and options """ files: Structure = {".cirrus.yml": (cirrus_descriptor, no_overwrite())} return structure.merge(struct, files), opts
[docs]def cirrus_descriptor(_opts: ScaffoldOpts) -> str: """Returns the rendered template""" return get_template(TEMPLATE_FILE).template # no substitutions required