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(-)
@@ -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
@@ -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: