histogram/tools/add_boilerplate.py
Hans Dembinski df647cf959
update copyright (#55)
* add missing copyright notices
* workaround for xml_iarchive bug to handle XML with comments
* fixing min/max according to boost guidelines
2019-08-19 16:53:27 +02:00

54 lines
1.6 KiB
Python
Executable File

#!/usr/bin/env python3
# Copyright Hans Dembinski 2019
# Distributed under the Boost Software License, Version 1.0.
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
import sys
from os.path import abspath, join
import re
import datetime
project_dir = "/".join(abspath(__file__).split("/")[:-2])
filename = abspath(sys.argv[1])
copyright = """// Copyright Hans Dembinski {}
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)
""".format(datetime.datetime.today().year)
if filename.endswith(".hpp"):
with open(filename) as f:
content = f.read()
if not content.startswith("// Copyright"):
content = copyright + content
sub = filename[len(project_dir) + 1:]
if sub.startswith("include/boost/"):
sub = sub[len("include/boost/"):]
if sub.startswith("test/"):
sub = "histogram/" + sub
guard_name = "BOOST_" + sub.replace(".", "_").replace("/", "_").upper()
if guard_name not in content:
lines = content.split("\n")
for end, line in enumerate(lines):
if line.startswith("//"):
continue
break
for start in range(end, len(lines)):
if lines[start] != "":
break
lines = lines[:end] + ["", "#ifndef " + guard_name, "#define " + guard_name, ""] + lines[start:]
while lines[-1] == "":
lines.pop()
lines += ["", "#endif // " + guard_name, ""]
content = "\n".join(lines)
with open(filename, "w") as f:
f.write(content)