blob: 9fa0dc78d5bc98889ae1008cb1e3eda2a1acb16c [file] [log] [blame]
#!/usr/bin/env python3
#
# Copyright 2018 The Hafnium Authors.
#
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/BSD-3-Clause.
"""Add license header to source files.
If the file doesn't have the license header, add it with the appropriate comment
style.
"""
import argparse
import datetime
import re
import sys
bsd = """{comment} Copyright {year} The Hafnium Authors.
{comment}
{comment} Use of this source code is governed by a BSD-style
{comment} license that can be found in the LICENSE file or at
{comment} https://opensource.org/licenses/BSD-3-Clause."""
def Main():
parser = argparse.ArgumentParser()
parser.add_argument("file")
parser.add_argument("--style", choices=["c", "hash"], required=True)
args = parser.parse_args()
header = "/*\n" if args.style == "c" else ""
year = str(datetime.datetime.now().year)
header += bsd.format(comment=" *" if args.style == "c" else "#", year=year)
header += "\n */" if args.style == "c" else ""
header += "\n\n"
header_regex = re.escape(header).replace(year, r"\d\d\d\d")
with open(args.file, "rb") as f:
try:
contents = f.read().decode('utf-8', 'strict')
except Exception as ex:
print("Failed reading: " + args.file +
" (" + ex.__class__.__name__ + ")")
return
if re.search(header_regex, contents):
return
with open(args.file, "w") as f:
f.write(header)
f.write(contents)
if __name__ == "__main__":
sys.exit(Main())