summary refs log blame commit diff stats
path: root/ganarchy/cli/merge_configs.py
blob: d8e12e6f990e22f475d5d9e9f4b5fe3190a12f9c (plain) (tree)
























                                                                                                                                                                                   
import pathlib

import click

import ganarchy
import ganarchy.cli
import ganarchy.data

@ganarchy.cli.main.command()
@click.option('--skip-errors/--no-skip-errors', default=False)
@click.argument('files', type=click.Path(exists=True, dir_okay=False, resolve_path=True), nargs=-1)
def merge_configs(skip_errors, files):
    """Merges config files."""
    configs = [ganarchy.data.LocalDataSource(filename) for filename in files]
    rlm = ganarchy.data.RepoListManager(ganarchy.data.ObjectDataSource({}))
    rlm.sources += configs
    res = []
    for src in rlm.sources:
        res.append(src.update())
    effective = ganarchy.data.EffectiveSource(rlm)
    if any(x is None for x in res):
        click.echo("# This is DEPRECATED and will be REMOVED at some point!")
        for pctp in effective.get_property_values(ganarchy.data.DataProperty.VCS_REPOS):
            if pctp.active:
                click.echo(f"""projects."{ganarchy.tomlescape(pctp.project_commit)}"."{ganarchy.tomlescape(pctp.uri)}"."{ganarchy.tomlescape(pctp.branch)}" = {{ active=true }}""")