diff --git a/doc/doxygen/.gitignore b/doc/doxygen/.gitignore index 6276aff47cd2a10608a8977e708437ce135027fb..53e838267f920b0a15d3f6e89bbd0959387685fd 100644 --- a/doc/doxygen/.gitignore +++ b/doc/doxygen/.gitignore @@ -1 +1,2 @@ src/css/variables.less +src/changelog.md diff --git a/doc/doxygen/Makefile b/doc/doxygen/Makefile index 544278314c77aaae1af3d6d294aa22d9c91c902b..840bbf9c8ea4b8d52a580ecfbe1d835482d27dfa 100644 --- a/doc/doxygen/Makefile +++ b/doc/doxygen/Makefile @@ -10,11 +10,11 @@ doc: html # by marking html as phony we force make to re-run Doxygen even if the directory exists. .PHONY: html -html: src/css/riot.css +html: src/css/riot.css src/changelog.md ( cat riot.doxyfile ; echo "GENERATE_HTML = yes" ) | doxygen - .PHONY: man -man: +man: src/changelog.md ( cat riot.doxyfile ; echo "GENERATE_MAN = yes" ) | doxygen - ifneq (,$(shell which lessc)) @@ -27,9 +27,12 @@ src/css/variables.less: src/config.json -e 's/",\?$$/;/g' -e 's/\\"/"/g' > $@ endif +src/changelog.md: src/changelog.md.tmp ../../release-notes.txt + @./generate-changelog.py $+ $@ + .PHONY: -latex: +latex: src/changelog.md ( cat riot.doxyfile ; echo "GENERATE_LATEX= yes" ) | doxygen - clean: - -@rm -rf latex man html doxygen_objdb_*.tmp doxygen_entrydb_*.tmp + -@rm -rf latex man html doxygen_objdb_*.tmp doxygen_entrydb_*.tmp src/changelog.md diff --git a/doc/doxygen/generate-changelog.py b/doc/doxygen/generate-changelog.py new file mode 100755 index 0000000000000000000000000000000000000000..2e35e4e702460ebaee75ecf32f031c8703c9feae --- /dev/null +++ b/doc/doxygen/generate-changelog.py @@ -0,0 +1,66 @@ +#! /usr/bin/env python +# -*- coding: utf-8 -*- +# vim:fenc=utf-8 +# +# Copyright © 2017 Martine Lenders <m.lenders@fu-berlin.de> +# +# Distributed under terms of the MIT license. + +from __future__ import print_function +import re +import sys + +def generate_changelog(template_filename, changelog_filename, output_filename): + with open(template_filename) as template, \ + open(changelog_filename) as changelog, \ + open(output_filename, "w") as output: + changelog_lines = [] + release_title = re.compile(r"((RIOT-\d{4}\.\d{2} - Release Notes)|(Release 2013\.08))") + notes_template = re.compile(r"\[Notes\]") + first_title = True + title = 0 + prev_newline = False + # Traverse changelog file line-wise + for line in changelog: + # Remove duplicate newlines + if line == "\n" and not prev_newline: + prev_newline = True + elif line == "\n" and prev_newline: + continue + else: + prev_newline = False + if title: # if a release title was previously detected + changelog_lines.append("\n") # Remove the underline + title = False + prev_newline = True # this introduces a newline, so count it + elif release_title.match(line): + # if line contains a release title + release_match = re.search(r"(\d{4}\.\d{2})", line) + assert(release_match != None) + # parse out release number + release = release_match.group(1) + title = "Release %s" % release + tag = "release-%s" % release.replace('.', '-') + # append as level 1 title with reference anchor tag + changelog_lines.append("# %s {#%s}\n" % (title ,tag)) + title = True + first_title = False + else: + # append non-title log lines as verbatim (so notation is kept) + changelog_lines.append(" %s" % line) + for line in template: + # Traverse template file line-wise + if notes_template.match(line): + # if template string is matched: start adding changelog lines + for line_log in changelog_lines: + print(line_log, file=output, end="") + else: + # just print the template line + print(line, file=output, end="") + +if __name__ == "__main__": + if len(sys.argv) < 4: + print("usage %s <md template> <changelog> <output md>" % sys.argv[0], file=sys.stderr) + sys.exit(1) + generate_changelog(sys.argv[1], sys.argv[2], sys.argv[3]) + diff --git a/doc/doxygen/riot.doxyfile b/doc/doxygen/riot.doxyfile index 677db136d0806f909e765405c39e576da2b35cc5..493c165c5a28e2490ce5792fa9edfc76b8a627fb 100644 --- a/doc/doxygen/riot.doxyfile +++ b/doc/doxygen/riot.doxyfile @@ -764,7 +764,8 @@ INPUT = ../../doc.txt \ src/mainpage.md \ src/creating-modules.md \ src/creating-an-application.md \ - src/getting-started.md + src/getting-started.md \ + src/changelog.md # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses diff --git a/doc/doxygen/src/changelog.md.tmp b/doc/doxygen/src/changelog.md.tmp new file mode 100644 index 0000000000000000000000000000000000000000..acff108ce0b1b8b2ba927379bdd9b0c4e3945a15 --- /dev/null +++ b/doc/doxygen/src/changelog.md.tmp @@ -0,0 +1,6 @@ +Changelog {#changelog} +========= + +[TOC] + +[Notes]