"""Extension that generates configuration and script files for GitLab CI."""fromargparseimportArgumentParserfromtypingimportListfrom..importstructurefrom..actionsimportAction,ActionParams,ScaffoldOpts,Structurefrom..operationsimportno_overwritefrom..templatesimportget_templatefrom.importExtension,includefrom.pre_commitimportPreCommit
[docs]classGitLab(Extension):"""Generate GitLab CI configuration files"""
[docs]defaugment_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))returnself
[docs]defactivate(self,actions:List[Action])->List[Action]:"""Activate extension, see :obj:`~pyscaffold.extension.Extension.activate`."""returnself.register(actions,add_files,after="define_structure")
[docs]defadd_files(struct:Structure,opts:ScaffoldOpts)->ActionParams:"""Add .gitlab-ci.yml file to 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:ScaffoldOpts={".gitlab-ci.yml":(get_template("gitlab_ci"),no_overwrite())}returnstructure.merge(struct,files),opts