+++ /dev/null
-#!/usr/bin/python
-
-'''
-This script updates the copyright license lines for all files within a
-particular directory.
-
-usage:
- $ python scripts/update_copyright.py <dir>
-'''
-
-import os
-import sys
-import re
-
-def usage():
- print __doc__
-
-if len(sys.argv) != 2:
- sys.stderr.write("error: please provide an input directory\n")
- usage()
- sys.exit(-1)
-elif sys.argv[1] in ('-h','--help'):
- usage()
- sys.exit(0)
-
-# new copyright
-newcopy = '''\
-Copyright (c) 2007 - 2015 Joseph Gaeddert
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.'''.splitlines()
-
-# add new line character to end of each line
-for i in xrange(len(newcopy)):
- newcopy[i] += '\n'
-
-rootdir = sys.argv[1]
-
-# specific files to ignore
-ignore_files = ['update_copyright.py',]
-
-# directories to ignore
-ignore_directories = ['.git',]
-
-# only look at these extensions
-include_extensions = ['.h', '.c', '.md', '.tex', '.ac', '.in', '.m',]
-
-# print alignment for status
-align = 56
-
-#
-def update_copyright(filename=""):
- """
- Update copyright on file.
- """
- # try to open file
- contents = []
- with open( filename, 'r' ) as f:
- # read lines from file (removing newline character at end)
- for line in f:
- #contents.append(line.strip('\n\r'))
- contents.append(line)
-
- # parse contents
- index_start = -1
- index_stop = -1
-
- # search for copyright; starts at top of file
- for i in range(min(10, len(contents))):
- if re.search(r'Copyright .* Joseph Gaeddert',contents[i]):
- index_start = i
- break
-
- if index_start == -1:
- print " " + filename + ":" + " "*(align-len(filename)) + "no copyright found"
- return
-
- # look for end of copyright
- #for i in range(index_start+15,index_start+15+min(10, len(contents))):
- i = index_start + 15
- if re.search(r'along with liquid. If not, see',contents[i]):
- index_stop = i
- elif re.search(r'AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM',contents[i]):
- print " " + filename + ":" + " "*(align-len(filename)) + "copyright already updated"
- return
- else:
- print " " + filename + ":" + " "*(align-len(filename)) + "could not find end of copyright"
- return
-
- # check comment type
- m = re.search(r'^( \*|#+) +Copyright',contents[index_start])
- if m:
- comment = m.group(1)
- else:
- raise Exception('unexpected error')
-
- # delete items in list
- contents.__delslice__(index_start, index_stop+1)
-
- # insert new copyright
- for i in range(len(newcopy)):
- # only add space after comment characters if string is not empty
- # (e.g. print ' *' instead of ' * ')
- space = ' ' if len(newcopy[i].strip()) > 0 else ''
-
- # insert new comment
- contents.insert(index_start+i, comment + space + newcopy[i])
-
- # open original file for writing
- with open( filename, 'w' ) as f:
- for line in contents:
- f.write(line)
-
- print " " + filename + ":" + " "*(align-len(filename)) + "updated"
-
-#
-for root, subFolders, files in os.walk(rootdir):
-
- # strip off leading './' if it exists
- if root.startswith('./'):
- root = root[2:]
-
- # print root directory
- print root
-
- # ignore certain directories
- if root in ignore_directories:
- print "(skipping directory)"
- continue
-
- # print subfolders
- #for folder in subFolders:
- # print "%s has subdirectory %s" % (root, folder)
-
- # parse each filename in directory
- for filename in files:
- filePath = os.path.join(root, filename)
-
- # check filename
- if filePath in ignore_files:
- print " " + filePath + ":" + " "*(align-len(filePath)) + "ignoring this specific file"
- continue;
-
- # check filename extension
- baseName, extension = os.path.splitext(filename)
- if extension not in include_extensions:
- print " " + filePath + ":" + " "*(align-len(filePath)) + "improper extension; ignoring file"
- continue;
-
- # continue on with this file
- update_copyright(filePath)
-
-