From e6cc0a2b756f1462bcce2222437a6e159be48498 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Wed, 1 Feb 2017 17:18:08 +0100 Subject: Updated license script Added missing license headers Added pre-commit hook to check for missing licenses --- util/license.py | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100755 util/license.py (limited to 'util/license.py') diff --git a/util/license.py b/util/license.py new file mode 100755 index 0000000..0bbc6be --- /dev/null +++ b/util/license.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python3 + +import argparse +import datetime +import sys + +def readLicense(licenseFile): + with open(licenseFile) as rawlicense: + licensetext = rawlicense.read() + + # fill in the year + licensetext = licensetext.replace('$CURRENTYEAR$', str(datetime.datetime.now().year)) + + return licensetext + +def hasLicense(sourceFile): + with open(sourceFile) as source: + if source.readline().startswith('/** LICENSE **'): + return True + else: + return False + +def addLicense(sourceFile, licenseText): + with open(sourceFile, 'r') as source: + origData = source.read() + with open(sourceFile, 'w') as source: + source.write(licenseText + origData) + +def lint(license, src, dryRun, verbose=False): + if verbose is True: + print("license={0}".format(license)) + print("source={0}".format(src)) + + # read license file + licensetext = readLicense(license) + if verbose is True: + print("-- license text --") + print(licensetext) + print("-- license text --") + + if len(src) is 0: + print("No files to process.") + return 0 + + # open source file and check for license + numFaults = 0 + for filename in src: + if hasLicense(filename) is True: + if verbose: + print("OK {0}".format(filename)) + else: + if dryRun is True: + if verbose: + print("fail {0}".format(filename)) + else: + addLicense(filename, licensetext) + print("fix {0}".format(filename)) + + numFaults += 1 + + if numFaults is not 0: + print("License check: number of faults: {0}".format(numFaults)) + + return numFaults + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='check source files for license') + parser.add_argument('-l', '--license', required=True, help="use this file as license header template") + parser.add_argument('-v', '--verbose', action='store_true', help="print additional information") + parser.add_argument('-c', '--dry-run', action='store_true', help="don't modify any files, only check for licenses") + parser.add_argument('src', nargs='*', help="list of files to check") + args = parser.parse_args() + + sys.exit(lint(args.license, args.src, args.dry_run, args.verbose)) -- cgit v1.2.1