From 06e9f8f8b839211e1445ff077bf1c8ecd74e445e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 29 Oct 2020 10:57:21 +0530 Subject: [PATCH] Make the calibre changelog available as a resource --- .gitignore | 1 + setup/changelog.py | 7 +++++-- setup/resources.py | 8 ++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index fc14293307..6b8ce08211 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ docs resources/localization resources/hyphenation resources/scripts.calibre_msgpack +resources/changelog.json resources/ebook-convert-complete.calibre_msgpack resources/builtin_recipes.xml resources/builtin_recipes.zip diff --git a/setup/changelog.py b/setup/changelog.py index 2872716354..57efd7aa94 100644 --- a/setup/changelog.py +++ b/setup/changelog.py @@ -5,7 +5,7 @@ from datetime import date -def parse(raw): +def parse(raw, parse_dates=True): entries = [] current_entry = None current_section = 'new features' @@ -21,7 +21,10 @@ def parse(raw): if current_entry is not None: raise ValueError(f'Start of entry while previous entry is still active at line: {linenum}') version, draw = parts - d = date(*map(int, draw.split('-'))) + if parse_dates: + d = date(*map(int, draw.split('-'))) + else: + d = draw current_entry = {'version': version, 'date': d, 'new features': [], 'bug fixes': [], 'improved recipes': [], 'new recipes': []} current_section = 'new features' return in_entry diff --git a/setup/resources.py b/setup/resources.py index 2c7b41e3f6..a2442b47b6 100644 --- a/setup/resources.py +++ b/setup/resources.py @@ -310,6 +310,14 @@ class Resources(Command): # {{{ d[lc] = stats['translated'] / float(total) dump_json(d, self.j(self.RESOURCES, 'user-manual-translation-stats.json')) + src = self.j(self.SRC, '..', 'Changelog.txt') + dest = self.j(self.RESOURCES, 'changelog.json') + if self.newer(dest, [src]): + self.info('\tCreating changelog.calibre_msgpack') + from setup.changelog import parse + with open(src) as f: + dump_json(parse(f.read(), parse_dates=False), dest) + def clean(self): for x in ('scripts', 'ebook-convert-complete'): x = self.j(self.RESOURCES, x+'.pickle')