diff options
| -rw-r--r-- | smolbote.qbs | 2 | ||||
| -rwxr-xr-x | tools/hooks/pre-commit.rb | 23 | ||||
| -rw-r--r-- | tools/qbs/GitRepo.js (renamed from qbs/GitRepo.js) | 0 | ||||
| -rw-r--r-- | util/header-gpl3.txt | 20 | ||||
| -rwxr-xr-x | util/license.py | 74 | ||||
| -rwxr-xr-x | util/pre-commit.py | 36 | 
6 files changed, 24 insertions, 131 deletions
| diff --git a/smolbote.qbs b/smolbote.qbs index 236c6da..e58bb1c 100644 --- a/smolbote.qbs +++ b/smolbote.qbs @@ -1,5 +1,5 @@  import qbs -import "qbs/GitRepo.js" as GitRepo +import "tools/qbs/GitRepo.js" as GitRepo  Project {      id: project diff --git a/tools/hooks/pre-commit.rb b/tools/hooks/pre-commit.rb new file mode 100755 index 0000000..83b4978 --- /dev/null +++ b/tools/hooks/pre-commit.rb @@ -0,0 +1,23 @@ +#!/usr/bin/env ruby + +result = 0 +files = Dir['src/**/*.h'] + Dir['src/**/*.cpp'] - Dir['src/3rd-party/**/*'] + +puts 'Checking licenses...' +files.each { |name| +    File.open(name) { |f| +        if not f.readline.start_with? '/** LICENSE **' then +            puts "Missing license header: #{name}" +            result = 1 +        end +    } +} + +puts 'Checking style...' +if not `astyle --dry-run --formatted --options=astyle.rc #{files.join(' ')}`.empty? then +    system "astyle --verbose --formatted --options=astyle.rc #{files.join(' ')}" +    result = 1 +end + +puts "pre-commit exit(#{result})" +exit result diff --git a/qbs/GitRepo.js b/tools/qbs/GitRepo.js index d7e19a7..d7e19a7 100644 --- a/qbs/GitRepo.js +++ b/tools/qbs/GitRepo.js diff --git a/util/header-gpl3.txt b/util/header-gpl3.txt deleted file mode 100644 index a44bbfe..0000000 --- a/util/header-gpl3.txt +++ /dev/null @@ -1,20 +0,0 @@ -/** LICENSE ******************************************************************** - ** - ** smolbote: yet another qute browser - ** 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 - ** the Free Software Foundation, either version 3 of the License, or - ** (at your option) any later version. - ** - ** This program is distributed in the hope that it will be useful, - ** but WITHOUT ANY WARRANTY; without even the implied warranty of - ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - ** GNU General Public License for more details. - ** - ** You should have received a copy of the GNU General Public License - ** along with this program.  If not, see <http://www.gnu.org/licenses/>. - ** - ******************************************************************************/ - diff --git a/util/license.py b/util/license.py deleted file mode 100755 index 0bbc6be..0000000 --- a/util/license.py +++ /dev/null @@ -1,74 +0,0 @@ -#!/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/pre-commit.py b/util/pre-commit.py deleted file mode 100755 index ca1dc35..0000000 --- a/util/pre-commit.py +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env python3 - -import os -import sys -import subprocess -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 = False - -# check license -print("Checking license...") -if license.lint("util/header-gpl3.txt", glob.glob("src/**/*.cpp") + glob.glob("src/**/*.h"), True) > 0: -    problems = True -    print("Run <<./util/license.py -l util/header-gpl3.txt src/**/*.cpp src/**/*.h>> to autofix") - -# check style -print("Checking style...") -astyle = subprocess.run(['astyle', '--dry-run', '--formatted', '--options=astyle.rc'] + glob.glob("src/**/*.cpp") + glob.glob("src/**/*.h"), stdout=subprocess.PIPE) -if len(astyle.stdout.splitlines()) > 0: -    problems = True -    for line in astyle.stdout.splitlines(): -        print(line.decode('utf-8')) -    print("Run <<astyle --options=astyle.rc --suffix=none src/**/*.cpp src/**/*.h>> to autofix") - -# restore stash -#os.system("git stash pop -q") - -if problems: -    sys.exit(-1) -else: -    sys.exit(0) | 
