From bfcc3444e608d92b8ed517ccfb59ea55edb10dcf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lorenz=20H=C3=BCdepohl?= <dev@stellardeath.org>
Date: Fri, 3 Apr 2020 14:13:16 +0200
Subject: [PATCH] Fix mpcdf_sync_projects

- Had old logic for distribution
- Removed '--all' flag to disentangle functionality
  Use mpcdf_setup_subproject if you want to re-create all enabled
  repositories for all packages
---
 mpcdf_common.py        | 26 ++++++--------------------
 mpcdf_sync_projects.py | 11 +++--------
 2 files changed, 9 insertions(+), 28 deletions(-)

diff --git a/mpcdf_common.py b/mpcdf_common.py
index 9a52ec3..72459a7 100644
--- a/mpcdf_common.py
+++ b/mpcdf_common.py
@@ -865,10 +865,7 @@ def set_as_branch(api_url, my_project, my_package, main_project, main_package):
     return True
 
 
-def sync_projects(api_url, package=None, from_project="software", to_projects=None, redo_all=False, add_to_maintainers=True, verbose=False):
-    if package is not None and redo_all:
-        raise osc.oscerr.WrongArgs('Cannot specify `redo_all` and package')
-
+def sync_projects(api_url, package=None, from_project="software", to_projects=None, add_to_maintainers=True, verbose=False):
     if to_projects is None:
         to_projects = [p for p in osc.core.meta_get_project_list(api_url)
                        if p.startswith("software:") and not (p == "software:dist" or p == "software:images")]
@@ -880,15 +877,16 @@ def sync_projects(api_url, package=None, from_project="software", to_projects=No
 
         if package is None:
             from_packages = osc.core.meta_get_packagelist(api_url, from_project)
-            if not redo_all:
-                from_packages = list(sorted(set(from_packages) - set(to_packages)))
         else:
             from_packages = [package]
 
         def non_system_package(package):
             enable_repos = get_attribute_values(api_url, from_project, package, "MPCDF:enable_repositories")
-            if enable_repos == ["system"]:
-                print("Not branching package {0}, is only enabled for 'System'".format(package))
+            if len(enable_repos) == 0:
+                print("Not branching package {0}, is disabled".format(package))
+                return False
+            elif enable_repos == ["system"]:
+                print("Not branching package {0}, is only enabled for 'system'".format(package))
                 return False
             else:
                 return True
@@ -930,18 +928,6 @@ def sync_projects(api_url, package=None, from_project="software", to_projects=No
                             to_meta.insert(2, person)
                         osc.core.edit_meta("pkg", (to_project, orig_package), data=ElementTree.tostring(to_meta), apiurl=api_url)
 
-        if package is None and redo_all:
-            # Check if distribution is already set in to_project
-            to_prj_meta = project_meta(api_url, to_project)
-            some_repo = to_prj_meta.find('./repository')
-            if some_repo is None:
-                distribution = project_meta(api_url, from_project).find('./repository/path[@project="software"]').get("repository")
-            else:
-                distribution = some_repo.find('./path[@project="distributions"]').get("repository")
-
-            print("Creating repository configuration")
-            mpcdf_setup_subproject(api_url, to_project, distribution=distribution)
-
         for orig_package in from_packages:
             try:
                 mpcdf_enable_repositories(api_url, to_project, orig_package, verbose=verbose)
diff --git a/mpcdf_sync_projects.py b/mpcdf_sync_projects.py
index 5baea7d..e6695cd 100644
--- a/mpcdf_sync_projects.py
+++ b/mpcdf_sync_projects.py
@@ -8,8 +8,6 @@ import osc.core
 import osc.cmdln
 
 
-@osc.cmdln.option('-a', '--all', action="store_true",
-                  help="Update all packages in the target repository, not only new ones")
 @osc.cmdln.option('-f', '--from', default="software",
                   help="Source project")
 @osc.cmdln.option('-t', '--to',
@@ -23,7 +21,6 @@ def do_mpcdf_sync_projects(self, subcmd, opts, *args):
     Usage:
         osc mpcdf_sync_projects
         osc mpcdf_sync_projects PACKAGE
-        osc mpcdf_sync_projects --all-packages
 
     Examples:
         - Sync all new packages from software into all software: sub-projects
@@ -32,8 +29,8 @@ def do_mpcdf_sync_projects(self, subcmd, opts, *args):
         - Sync the package foobar_1_2 into all software: sub-projects
          #> osc mpcdf_sync_projects foobar_1_2
 
-        - Sync all packages from software to software:SLE_12_SP3:skylake
-         #> osc mpcdf_sync_projects --all-packages --to software:SLE_12_SP3:skylake
+        - Update project software:SLE_12_SP3:skylake with all new packages from software
+         #> osc mpcdf_sync_projects --to software:SLE_12_SP3:skylake
 
     ${cmd_option_list}
     """
@@ -41,8 +38,6 @@ def do_mpcdf_sync_projects(self, subcmd, opts, *args):
 
     if len(args) > 1:
         raise osc.oscerr.WrongArgs("Too many arguments")
-    elif len(args) == 1 and opts.all:
-        raise osc.oscerr.WrongArgs('Cannot specify `--all` and PACKAGE')
     elif len(args) == 1:
         package, = args
 
@@ -56,5 +51,5 @@ def do_mpcdf_sync_projects(self, subcmd, opts, *args):
         to_projects = None
 
     mpcdf_common.sync_projects(api_url, package,
-                               from_project=from_project, to_projects=to_projects, redo_all=opts.all,
+                               from_project=from_project, to_projects=to_projects,
                                add_to_maintainers=not opts.private)
-- 
GitLab