|
| 1 | +#!/usr/bin/python |
| 2 | + |
| 3 | +import sys |
| 4 | +import json |
| 5 | +from datetime import datetime |
| 6 | +import ghApiClient |
| 7 | + |
| 8 | +def allPulls(releaseDate): |
| 9 | + |
| 10 | + result = "" |
| 11 | + |
| 12 | + baseurl = "https://api.github.com/repos/swagger-api/swagger-core/pulls/" |
| 13 | + content = ghApiClient.readUrl('repos/swagger-api/swagger-core/pulls?state=closed&base=master&per_page=100') |
| 14 | + for l in content: |
| 15 | + stripped = l["url"][len(baseurl):] |
| 16 | + mergedAt = l["merged_at"] |
| 17 | + if mergedAt is not None: |
| 18 | + if datetime.strptime(mergedAt, '%Y-%m-%dT%H:%M:%SZ') > releaseDate: |
| 19 | + if not l['title'].startswith("bump snap"): |
| 20 | + result += '\n' |
| 21 | + result += "* " + l['title'] + " (#" + stripped + ")" |
| 22 | + return result |
| 23 | + |
| 24 | + |
| 25 | +def lastReleaseDate(tag): |
| 26 | + content = ghApiClient.readUrl('repos/swagger-api/swagger-core/releases/tags/' + tag) |
| 27 | + publishedAt = content["published_at"] |
| 28 | + return datetime.strptime(publishedAt, '%Y-%m-%dT%H:%M:%SZ') |
| 29 | + |
| 30 | + |
| 31 | +def addRelease(release_title, tag, content): |
| 32 | + payload = "{\"tag_name\":\"" + tag + "\", " |
| 33 | + payload += "\"name\":" + json.dumps(release_title) + ", " |
| 34 | + payload += "\"body\":" + json.dumps(content) + ", " |
| 35 | + payload += "\"draft\":" + "true" + ", " |
| 36 | + payload += "\"prerelease\":" + "false" + ", " |
| 37 | + payload += "\"target_commitish\":\"" + "master" + "\"}" |
| 38 | + content = ghApiClient.postUrl('repos/swagger-api/swagger-core/releases', payload) |
| 39 | + return content |
| 40 | + |
| 41 | +def getReleases(): |
| 42 | + content = ghApiClient.readUrl('repos/swagger-api/swagger-core/releases') |
| 43 | + return content |
| 44 | + |
| 45 | +# main |
| 46 | +def main(last_release, release_title, tag): |
| 47 | + baseurl = "https://api.github.com/repos/swagger-api/swagger-core/pulls/" |
| 48 | + payload = "{\"tag_name\":\"" + tag + "\", " |
| 49 | + payload += "\"name\":" + json.dumps(release_title) + ", " |
| 50 | + payload += "\"body\":" + json.dumps(content) + ", " |
| 51 | + payload += "\"draft\":" + "true" + ", " |
| 52 | + payload += "\"prerelease\":" + "false" + ", " |
| 53 | + payload += "\"target_commitish\":\"" + "master" + "\"}" |
| 54 | + content = ghApiClient.postUrl('repos/swagger-api/swagger-core/releases', payload) |
| 55 | + result = allPulls(lastReleaseDate('v' + last_release)) |
| 56 | + addRelease (release_title, tag, result) |
| 57 | + |
| 58 | +# here start main |
| 59 | +main(sys.argv[1], sys.argv[2], sys.argv[3]) |
| 60 | + |
0 commit comments