Source code for mloq.commands.setup

"""Mloq setup command implementation."""
from pathlib import Path
from typing import List, Tuple

import click
from omegaconf import DictConfig

from mloq.command import Command, CommandMixin
from mloq.record import CMDRecord


[docs]def _sub_commands(): from mloq.commands import ( CiCMD, DockerCMD, DocsCMD, GlobalsCMD, LicenseCMD, LintCMD, PackageCMD, ProjectCMD, RequirementsCMD, ) return ( GlobalsCMD, ProjectCMD, PackageCMD, LicenseCMD, LintCMD, CiCMD, DocsCMD, DockerCMD, RequirementsCMD, )
SUB_COMMANDS = _sub_commands()
[docs]class SetupCMD(CommandMixin): """Implement the functionality of the setup Command.""" cmd_name = "setup" files = tuple([file for cmd in SUB_COMMANDS for file in cmd.files]) SUB_COMMAND_CLASSES = SUB_COMMANDS def __init__(self, record: CMDRecord, interactive: bool = False): """ Initialize a SetupCMD class. Args: record: CMDRecord where the command data will be written. interactive: If True, parse the command configuration in interactive mode. """ super(SetupCMD, self).__init__(record=record, interactive=interactive) self._sub_commands = [ cmd(record=self.record, interactive=interactive) for cmd in self.SUB_COMMAND_CLASSES ] self.files = tuple([file for cmd in self._sub_commands for file in cmd.files]) @property def config(self) -> DictConfig: """List of all the commands that will be executed when running mloq setup.""" return self.record.config @property def sub_commands(self) -> List[Command]: """List of all the commands that will be executed when running mloq setup.""" return self._sub_commands @property def directories(self) -> Tuple[Path]: """Tuple containing Paths objects representing the directories created by the command.""" return tuple([directory for cmd in self.sub_commands for directory in cmd.directories])
[docs] def interactive_config(self) -> DictConfig: """Generate the configuration of the project interactively.""" click.echo("Provide the values to generate the project configuration.") for cmd in self.sub_commands: cmd.interactive_config() return self.record.config
[docs] def parse_config(self) -> DictConfig: """Update the configuration DictConfig with the Command parameters.""" for cmd in self.sub_commands: cmd.parse_config() return self.record.config
[docs] def run_side_effects(self) -> None: """Apply additional configuration methods.""" for cmd in self.sub_commands: cmd.run_side_effects()
[docs] def record_files(self) -> None: """Register the files that will be generated by mloq.""" for cmd in self.sub_commands: cmd.record_files()