1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #!/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)
|