From: Simon Glass <simon.glass@canonical.com> Add -u/--upstream-name to set-project and get-project so the user can specify which upstream a project belongs to. In do_series(), look up the series' upstream and use it to find the matching patchwork project, falling back to any configured project if there is no upstream-specific one. Signed-off-by: Simon Glass <simon.glass@canonical.com> --- tools/patman/cmdline.py | 8 +++++++- tools/patman/control.py | 26 +++++++++++++++++++------- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/tools/patman/cmdline.py b/tools/patman/cmdline.py index 65b9dfab4bb..74571fd7220 100644 --- a/tools/patman/cmdline.py +++ b/tools/patman/cmdline.py @@ -159,10 +159,16 @@ def add_patchwork_subparser(subparsers): ['set-project', 'U-Boot'], ] patchwork_subparsers = patchwork.add_subparsers(dest='subcmd') - patchwork_subparsers.add_parser('get-project') + gproj = patchwork_subparsers.add_parser('get-project') + gproj.add_argument( + '-u', '--upstream-name', + help='Upstream to get the project for') uset = patchwork_subparsers.add_parser('set-project') uset.add_argument( 'project_name', help="Patchwork project name, e.g. 'U-Boot'") + uset.add_argument( + '-u', '--upstream-name', + help='Upstream to associate this project with') return patchwork diff --git a/tools/patman/control.py b/tools/patman/control.py index 1a65dfc2cc6..191cfc134d3 100644 --- a/tools/patman/control.py +++ b/tools/patman/control.py @@ -135,11 +135,15 @@ def do_series(args, test_db=None, pwork=None, cser=None): if args.subcmd in needs_patchwork: if not pwork: pwork = Patchwork(args.patchwork_url) - proj = cser.project_get() + ups = cser.get_series_upstream(args.series) + proj = cser.project_get(ups) + if not proj: + proj = cser.project_get() if not proj: raise ValueError( - "Please set project ID with 'patman patchwork set-project'") - _, proj_id, link_name = cser.project_get() + "Please set project ID with " + "'patman patchwork set-project'") + _, proj_id, link_name = proj pwork.project_set(proj_id, link_name) elif pwork and pwork is not True: raise ValueError( @@ -270,13 +274,21 @@ def patchwork(args, test_db=None, pwork=None): if args.subcmd == 'set-project': if not pwork: pwork = Patchwork(args.patchwork_url) - cser.project_set(pwork, args.project_name) + cser.project_set(pwork, args.project_name, + ups=args.upstream_name) elif args.subcmd == 'get-project': - info = cser.project_get() + ups = args.upstream_name + info = cser.project_get(ups) if not info: - raise ValueError("Project has not been set; use 'patman patchwork set-project'") + raise ValueError( + "Project has not been set; use " + "'patman patchwork set-project'") name, pwid, link_name = info - print(f"Project '{name}' patchwork-ID {pwid} link-name '{link_name}'") + msg = (f"Project '{name}' patchwork-ID {pwid} " + f"link-name '{link_name}'") + if ups: + msg += f" upstream '{ups}'" + print(msg) else: raise ValueError(f"Unknown patchwork subcommand '{args.subcmd}'") finally: -- 2.43.0