MCPcopy Create free account
hub / github.com/defold/defold / parse_github_project

Function parse_github_project

scripts/releasenotes_github_projectv2.py:354–473  ·  view source on GitHub ↗
(version)

Source from the content-addressed store, hash-verified

352
353
354def parse_github_project(version):
355 project = get_project(version)
356 if not project:
357 print("Unable to find GitHub project for version %s" % version)
358 return None
359
360
361 print("Parsing GitHub project for version %s" % version)
362 issues = []
363 items = get_issues_and_prs(project)
364 for item in items:
365 content = item.get("content")
366 if not content:
367 continue
368
369 # if content.get("number") not in [11377,11412]: continue
370 # pprint(content)
371 # pprint(item)
372
373 repository = content.get("repository").get("name")
374 print(" %12s %-12s #%-8s - " % (item.get("type"), repository, content.get("number")), end = "")
375 if content.get("merged", False) == False and content.get("closed", False) == False:
376 yellow("IGNORED (not closed/merged)")
377 continue
378
379 issue = None
380 pr = None
381 if item.get("type") == "ISSUE":
382 issue = get_issue(content.get("number"), repository = repository)
383 pr = get_closing_pr(issue)
384 elif item.get("type") == "PULL_REQUEST":
385 pr = get_pullrequest(content.get("number"), repository = repository)
386 issue = get_closing_issue(pr)
387 issue_number_matching = pr.get("number") == issue.get("number")
388 repository_matching = pr.get("repository").get("name") == issue.get("repository").get("name")
389 if repository_matching and not issue_number_matching:
390 yellow("IGNORED (both PR and issue #%s added to the project)" % issue.get("number"))
391 continue
392
393 labels = get_labels(issue, pr)
394
395 # skip release notes if label is set
396 if "skip release notes" in labels:
397 yellow("IGNORED (skip release notes)")
398 continue
399
400 # Make sure to ignore duplicates
401 duplicate = False
402 for existing_issue in issues:
403 if existing_issue.get("number") == issue.get("number") and existing_issue.get("repository") == issue.get("repository"):
404 duplicate = True
405 break
406
407 # Multiple issues closed by the same PR
408 for existing_issue in issues:
409 if existing_issue["pr_number"] == pr.get("number"):
410 existing_issue["closed_issues"].append(issue.get("number"))
411 duplicate = True

Callers 1

generateFunction · 0.85

Calls 15

get_issues_and_prsFunction · 0.85
yellowFunction · 0.85
get_issueFunction · 0.85
get_closing_prFunction · 0.85
get_pullrequestFunction · 0.85
get_closing_issueFunction · 0.85
get_labelsFunction · 0.85
find_merge_commitFunction · 0.85
find_reference_commitsFunction · 0.85
greenFunction · 0.85
appendMethod · 0.80

Tested by

no test coverage detected