summary refs log tree commit diff stats
path: root/ganarchy/cli
diff options
context:
space:
mode:
Diffstat (limited to 'ganarchy/cli')
-rw-r--r--ganarchy/cli/merge_configs.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/ganarchy/cli/merge_configs.py b/ganarchy/cli/merge_configs.py
new file mode 100644
index 0000000..d8e12e6
--- /dev/null
+++ b/ganarchy/cli/merge_configs.py
@@ -0,0 +1,25 @@
+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 }}""")