@@ -39,7 +39,8 @@ def init_config():
39
39
config .add_section ('target' )
40
40
config .add_section ('format' )
41
41
config .add_section ('settings' )
42
-
42
+ config .add_section ('filter' )
43
+
43
44
arg_parser = argparse .ArgumentParser (description = "Import issues from one GitHub repository into another." )
44
45
45
46
config_group = arg_parser .add_mutually_exclusive_group (required = False )
@@ -54,7 +55,10 @@ def init_config():
54
55
arg_parser .add_argument ('--ignore-comments' , dest = 'ignore_comments' , action = 'store_true' , help = "Do not import comments in the issue." )
55
56
arg_parser .add_argument ('--ignore-milestone' , dest = 'ignore_milestone' , action = 'store_true' , help = "Do not import the milestone attached to the issue." )
56
57
arg_parser .add_argument ('--ignore-labels' , dest = 'ignore_labels' , action = 'store_true' , help = "Do not import labels attached to the issue." )
57
-
58
+ arg_parser .add_argument ('--ignore-pullrequests' , dest = 'ignore_pullrequests' , action = 'store_true' , help = "Do not import issues that are pull requests." )
59
+
60
+ arg_parser .add_argument ('--filter-labels' , dest = 'filter_labels' , help = "Comma separated values of labels to use as filters." )
61
+
58
62
arg_parser .add_argument ('--issue-template' , help = "Specify a template file for use with issues." )
59
63
arg_parser .add_argument ('--comment-template' , help = "Specify a template file for use with comments." )
60
64
arg_parser .add_argument ('--pull-request-template' , help = "Specify a template file for use with pull requests." )
@@ -235,18 +239,24 @@ def get_issues_by_id(which, issue_ids):
235
239
issues = []
236
240
for issue_id in issue_ids :
237
241
issues .append (get_issue_by_id (which , int (issue_id )))
238
-
242
+
239
243
return issues
240
244
241
245
# Allowed values for state are 'open' and 'closed'
242
246
def get_issues_by_state (which , state ):
243
247
issues = []
244
248
page = 1
249
+ import_pullrequests = config .getboolean ('settings' , 'import-pullrequests' )
250
+ default_labels = ''
251
+ labels = config .get ('filter' , 'labels' , fallback = default_labels )
245
252
while True :
246
- new_issues = send_request (which , "issues?state=%s&direction=asc&page=%d" % (state , page ))
253
+ new_issues = send_request (which , "issues?state=%s&direction=asc&page=%d&labels=%s " % (state , page , labels ))
247
254
if not new_issues :
248
255
break
249
- issues .extend (new_issues )
256
+ if import_pullrequests :
257
+ issues .extend (new_issues )
258
+ else :
259
+ issues .extend (filter (lambda issue :'pull_request' not in issue ,new_issues ))
250
260
page += 1
251
261
return issues
252
262
0 commit comments