1
0
Fork 0
mirror of https://github.com/Findus23/new-github-changelog-generator.git synced 2024-08-27 19:52:18 +02:00
This commit is contained in:
Lukas Winkler 2019-02-03 18:26:13 +01:00
parent 38dfbc9ec5
commit 9926bd2e23
4 changed files with 31 additions and 5 deletions

View file

@ -1,9 +1,28 @@
import argparse
from datetime import datetime, timedelta
from generator import generate_changelog
def parsed_date(s):
try:
return datetime.strptime(s, "%Y-%m-%d %H:%M:%S")
except ValueError:
msg = "Not a valid date: '{0}'.".format(s)
raise argparse.ArgumentTypeError(msg)
def main():
since = datetime.today() - timedelta(5)
generate_changelog(since)
parser = argparse.ArgumentParser(description='Generate changelogs from closed GitHub issues and merged PRs.')
parser.add_argument('--since', metavar='"YYYY-MM-DD HH:MM:SS"', type=parsed_date,
help='date of previous release')
parser.add_argument('--output', metavar='"YYYY-MM-DD HH:MM:SS"', type=parsed_date,
help='date of previous release')
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('--html', action='store_const', const="html", dest="output", help="output as HTML")
group.add_argument('--markdown', action='store_const', const="markdown", dest="output", help="output as markdown")
args = parser.parse_args()
generate_changelog(args.since, args.output)

View file

@ -9,7 +9,8 @@ class HTMLFormatter(BaseFormatter):
text = "<div>\n"
for repo in self.repos:
if repo.issues:
text += "<h3><a href='{}'>{}</a></h3>\n".format(repo.absolute_url, repo.path)
if len(self.repos) > 1:
text += "<h3><a href='{}'>{}</a></h3>\n".format(repo.absolute_url, repo.path)
text += "<ul>\n"
for issue in repo.issues:
text += "\t<li><a href='{url}'>#{id}</a> {title}".format(

View file

@ -9,7 +9,8 @@ class MarkdownFormatter(BaseFormatter):
text = ""
for repo in self.repos:
if repo.issues:
text += "### [{}]({})\n".format(repo.path, repo.absolute_url)
if len(self.repos) > 1:
text += "### [{}]({})\n".format(repo.path, repo.absolute_url)
for issue in repo.issues:
text += " - [#{id}]({url}) {title}".format(
url=issue.url,

View file

@ -25,7 +25,7 @@ def generate_statistics(repos: List[Repo]):
print("{num} Tickets closed by {contr} contributors".format(num=num_issues, contr=len(unique_authors)))
def generate_changelog(since: datetime):
def generate_changelog(since: datetime, output_format):
repos = []
for repo_url in config.repositories:
repo = Repo(repo_url)
@ -45,5 +45,10 @@ def generate_changelog(since: datetime):
repo.issues = issues
repos.append(repo)
print(HTMLFormatter(repos))
if output_format == "html":
print(HTMLFormatter(repos))
elif output_format == "markdown":
print(MarkdownFormatter(repos))
else:
raise ValueError()
generate_statistics(repos)