Source code for mloq.commands.globals

"""Mloq globals command implementation."""
import click
from omegaconf import DictConfig, OmegaConf
import param

from mloq.command import Command


[docs]class GlobalsCMD(Command): """Implement the functionality of the globals Command.""" cmd_name = "globals" project_name = param.String(doc="Select project name") description = param.String(doc="Short description of the project") author = param.String(doc="Author(s) of the project") owner = param.String("${globals.author}", doc="Github handle of the project owner") email = param.String(doc="Owner contact email") open_source = param.Boolean(doc="Is the project Open Source?") project_url = param.String("???", doc="GitHub project url") default_branch = param.String("main", doc="Default branch of the project") license = param.String("MIT", doc="Project license type") use_poetry = param.Boolean(True, doc="Use poetry to manage dependencies?") main_python_version = param.String("3.8", doc="Python version for CI, Poetry and Docker")
[docs] def interactive_config(self) -> DictConfig: """Generate the configuration of the project interactively.""" click.echo("The following values will occur in several places in the generated files.") return super(GlobalsCMD, self).interactive_config()
[docs] def parse_config(self) -> DictConfig: """Generate the configuration of the project via a configuration file.""" default_url = f"https://github.com/{self.owner}/{self.project_name.replace(' ', '-')}" self.project_url = OmegaConf.select(self.config, "project_url", default=default_url) self.conf.sync() return super(GlobalsCMD, self).parse_config()