diff --git a/osc_plugin_clone/main.py b/osc_plugin_clone/main.py index b86a51c81ccd012528f72a3d7d4018a8cd8a2be4..03aad029e31a8ee7be1d33559d724cec295f8d68 100644 --- a/osc_plugin_clone/main.py +++ b/osc_plugin_clone/main.py @@ -286,11 +286,30 @@ def do_clone(self, subcmd, opts, src_project, dst_project): copy_project_meta(apiurl, src_project, dst_project, keep_metadata=opts.keep_metadata) +def mangle_prjname(name: str, src_distro: str, dst_distro: str) -> str: + """ + Generate a new project name + + >>> mangle_prjname("apertis:v2022:development", "apertis:v2022", "apertis:v2024") + 'apertis:v2024:development' + >>> mangle_prjname("apertis:v2022:updates:target", "apertis:v2022", "apertis:v2024") + 'apertis:v2024:updates:target' + >>> mangle_prjname("apertis:v2022pre:updates:target", "apertis:v2022", "apertis:v2024") + 'apertis:v2022pre:updates:target' + """ + return name.replace(src_distro + ':', dst_distro + ':') + + def do_fork(self, subcmd, opts, src_distro, dst_distro): apiurl = conf.config['apiurl'] projects = core.meta_get_project_list(apiurl) - src_distro_projects = [p for p in projects if p.startswith(src_distro + ':')] - dst_distro_projects = [dst_distro + ':' + p.split(':')[-1] for p in src_distro_projects] + src_distro_projects = [ + p for p in projects if p.startswith(src_distro + ':') + ] + dst_distro_projects = [ + mangle_prjname(p, src_distro, dst_distro) for p in src_distro_projects + ] + if src_distro in projects: msg = "%s is a project" % src_distro if not src_distro_projects: