@@ -1287,19 +1287,14 @@ class IssueCmd (CmdGroup):
1287
1287
"number ID to the %s" % cls .name )
1288
1288
@classmethod
1289
1289
def run (cls , parser , args ):
1290
- # URL fixed to issues, pull requests updates are made
1291
- # through issues to allow changing labels, assignee and
1292
- # milestone (even when GitHub itself doesn't support it
1293
- # :D)
1294
- url = '/repos/%s/issues/%s' % (config .upstream , args .issue )
1295
1290
title_body = dict ()
1296
1291
msg = args .message
1297
1292
title = args .title
1298
1293
if title :
1299
1294
title_body ['title' ] = title
1300
1295
if args .edit_message :
1301
1296
if not msg :
1302
- issue = req .get (url )
1297
+ issue = req .get (cls . url ( args . issue ) )
1303
1298
msg = title if title else issue ['title' ]
1304
1299
if issue ['body' ]:
1305
1300
msg += '\n \n ' + issue ['body' ]
@@ -1308,11 +1303,14 @@ class IssueCmd (CmdGroup):
1308
1303
(title , body ) = split_titled_message (msg )
1309
1304
title_body ['title' ] = title
1310
1305
title_body ['body' ] = body
1311
- issue = cls ._do_update (url , args .labels , args .assignee ,
1312
- args .milestone , args .state , ** title_body )
1313
- cls .print_issue_summary (issue )
1306
+ issue = cls ._do_update (args .issue , args .labels ,
1307
+ args .assignee , args .milestone , args .state , ** title_body )
1308
+ if issue is None :
1309
+ infof ('Nothing to update for #{}' , args .issue )
1310
+ else :
1311
+ cls .print_issue_summary (issue )
1314
1312
@classmethod
1315
- def _do_update (cls , url , labels = None , assignee = None ,
1313
+ def _do_update (cls , issue_num , labels = None , assignee = None ,
1316
1314
milestone = None , state = None , title = None , body = None ):
1317
1315
params = dict ()
1318
1316
# Should labels be cleared?
@@ -1330,7 +1328,12 @@ class IssueCmd (CmdGroup):
1330
1328
params ['title' ] = title
1331
1329
if body :
1332
1330
params ['body' ] = body
1333
- return req .patch (url , ** params )
1331
+ if not params :
1332
+ return None # Make sure we don't make an invalid empty request
1333
+ # The URL is "hardcoded" to the issue URL here because the GitHub
1334
+ # API allows updating some metadata (like assignee, milestone and
1335
+ # labels), through it.
1336
+ return req .patch (IssueUtil .url (issue_num ), ** params )
1334
1337
1335
1338
class CommentCmd (IssueUtil ):
1336
1339
cmd_help = "add a comment to an existing issue"
0 commit comments