aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2017-02-01 17:18:08 +0100
committerAqua-sama <aqua@iserlohn-fortress.net>2017-02-01 17:18:08 +0100
commite6cc0a2b756f1462bcce2222437a6e159be48498 (patch)
tree2bab92eb8777a0f531fe42309f388330916987f1 /util
parentCleaned up UrlLineEdit (diff)
downloadsmolbote-e6cc0a2b756f1462bcce2222437a6e159be48498.tar.xz
Updated license script
Added missing license headers Added pre-commit hook to check for missing licenses
Diffstat (limited to 'util')
-rw-r--r--util/header-gpl3.txt2
-rwxr-xr-xutil/license.py74
-rwxr-xr-xutil/licensecheck.py59
-rwxr-xr-xutil/pre-commit.py19
4 files changed, 94 insertions, 60 deletions
diff --git a/util/header-gpl3.txt b/util/header-gpl3.txt
index 939e526..058a0f7 100644
--- a/util/header-gpl3.txt
+++ b/util/header-gpl3.txt
@@ -1,7 +1,7 @@
/** LICENSE ********************************************************************
**
** smolbote: yet another qute browser
- ** Copyright (C) $CURRENTYEAR$ $AUTHOR$
+ ** Copyright (C) $CURRENTYEAR$ Xian Nox
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
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))
diff --git a/util/licensecheck.py b/util/licensecheck.py
deleted file mode 100755
index be6de9a..0000000
--- a/util/licensecheck.py
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/usr/bin/env python3
-
-# TODO: username argument
-# TODO: updating licenses
-
-import argparse
-import datetime
-
-def getLicense(licenseFile):
- with open(licenseFile) as rawlicense:
- licensetext = rawlicense.read()
-
- # fill in name and year
- licensetext = licensetext.replace('$AUTHOR$', 'Xian Nox')
- 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 fix(sourceFile, licenseText):
- with open(sourceFile, 'r') as source:
- origData = source.read()
- with open(sourceFile, 'w') as source:
- source.write(licenseText + origData)
-
-def main(license, src, verbose=False):
- if verbose is True:
- print("Using license header {0}".format(license))
- print("Going through {0}".format(src))
-
- # read license file
- licensetext = getLicense(license)
- #print(licensetext)
-
- # open source file and check for license
- for filename in src:
- if hasLicense(filename):
- print("{0} has license".format(filename))
- else:
- fix(filename, licensetext)
- print("{0} license added".format(filename))
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser(description='Check source files for license')
- parser.add_argument('-l', '--license', required=True)
- parser.add_argument('-v', '--verbose', action='store_true')
- parser.add_argument('src', nargs='*')
- args = parser.parse_args()
-
- main(args.license, args.src, args.verbose)
-else:
- print('Do not use this as an import!')
- sys.exit(-1)
diff --git a/util/pre-commit.py b/util/pre-commit.py
new file mode 100755
index 0000000..f8242f6
--- /dev/null
+++ b/util/pre-commit.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python3
+
+import os
+import sys
+import glob
+import license
+
+# stash unstaged files before running test
+os.system("git stash -q --keep-index")
+
+print("Running pre-commit hook in {0}".format(os.getcwd()))
+
+problems = 0
+problems += license.lint("util/header-gpl3.txt", glob.glob("src/**/*.cpp") + glob.glob("src/**/*.h"), True)
+
+# restore stash
+os.system("git stash pop -q")
+
+sys.exit(problems)