mirror of
https://github.com/Findus23/new-github-changelog-generator.git
synced 2024-08-27 19:52:18 +02:00
argparse
This commit is contained in:
parent
38dfbc9ec5
commit
9926bd2e23
4 changed files with 31 additions and 5 deletions
|
@ -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)
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue