diff --git a/generator/cli.py b/generator/cli.py
index 60888df..f4e8ea3 100644
--- a/generator/cli.py
+++ b/generator/cli.py
@@ -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)
diff --git a/generator/formatters/html.py b/generator/formatters/html.py
index 6b1e000..5255c26 100644
--- a/generator/formatters/html.py
+++ b/generator/formatters/html.py
@@ -9,7 +9,8 @@ class HTMLFormatter(BaseFormatter):
text = "
\n"
for repo in self.repos:
if repo.issues:
- text += "
\n".format(repo.absolute_url, repo.path)
+ if len(self.repos) > 1:
+ text += "
\n".format(repo.absolute_url, repo.path)
text += "
\n"
for issue in repo.issues:
text += "\t- #{id} {title}".format(
diff --git a/generator/formatters/markdown.py b/generator/formatters/markdown.py
index 1c33c0b..22ca773 100644
--- a/generator/formatters/markdown.py
+++ b/generator/formatters/markdown.py
@@ -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,
diff --git a/generator/generator.py b/generator/generator.py
index bcd2651..836cca0 100644
--- a/generator/generator.py
+++ b/generator/generator.py
@@ -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)