X-Git-Url: http://git.tremily.us/?p=update-copyright.git;a=blobdiff_plain;f=update_copyright.py;h=37f4ba5fa841cf234a3b35d30dcd71d6149503bd;hp=85889595aaa25a84e0603518faf72201567c7d12;hb=60456481fe446c4ed2c1fa23ff65cc242952f410;hpb=4d75a43ad2a0dc974a9071847f283bc2635651ce diff --git a/update_copyright.py b/update_copyright.py index 8588959..37f4ba5 100755 --- a/update_copyright.py +++ b/update_copyright.py @@ -1,6 +1,22 @@ #!/usr/bin/python # -# Copyright +# Copyright (C) 2010 W. Trevor King +# +# This file is part of Hooke. +# +# Hooke is free software: you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation, either +# version 3 of the License, or (at your option) any later version. +# +# Hooke 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 Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with Hooke. If not, see +# . """Automatically update copyright boilerplate. @@ -50,38 +66,54 @@ License along with %(project)s. If not, see COPY_RIGHT_TAG='-xyz-COPY' + '-RIGHT-zyx-' # unlikely to occur in the wild :p ALIASES = { + 'A. Seeholzer': + ['A. Seeholzer'], 'Alberto Gomez-Casado': ['albertogomcas'], 'Massimo Sandal ': ['Massimo Sandal', 'devicerandom', 'unknown'], - 'Fabrizio Benedetti':['fabrizio.benedetti.82'], + 'Fabrizio Benedetti': + ['fabrizio.benedetti.82'], + 'Richard Naud ': + ['Richard Naud'], 'Rolf Schmidt ': ['Rolf Schmidt', 'illysam'], - 'Marco Brucale':['marcobrucale'], - 'Pancaldi Paolo':['pancaldi.paolo'], + 'Marco Brucale': + ['marcobrucale'], + 'Pancaldi Paolo': + ['pancaldi.paolo'], } -IGNORED_PATHS = ['./.hg/', './doc/img', './test/data/', - './build/', '/doc/build/'] +IGNORED_PATHS = ['./.hg/', './doc/img/', './test/data/', + './build/', './doc/build/'] IGNORED_FILES = ['COPYING', 'COPYING.LESSER'] # Work around missing author holes in the VCS history AUTHOR_HACKS = { ('hooke','driver','hdf5.py'):['Massimo Sandal'], ('hooke','driver','mcs.py'):['Allen Chen'], - ('hooke','plugin','peakspot.py'):['Fabrizio Benedetti'], + ('hooke','driver','mfp3d.py'):['A. Seeholzer','Richard Naud','Rolf Schmidt', + 'Alberto Gomez-Casado'], + ('hooke','util','peak.py'):['Fabrizio Benedetti'], + ('hooke','plugin','showconvoluted.py'):['Rolf Schmidt'], + ('hooke','ui','gui','formatter.py'):['Francesco Musiani','Massimo Sandal'], + ('hooke','ui','gui','prettyformat.py'):['Rolf Schmidt'], } # Work around missing year holes in the VCS history YEAR_HACKS = { ('hooke','driver','hdf5.py'):2009, + ('hooke','driver','mfp3d.py'):2008, ('hooke','driver','picoforce.py'):2006, ('hooke','driver','picoforcealt.py'):2006, - ('hooke','plugin','peakspot.py'):2007, + ('hooke','util','peak.py'):2007, + ('hooke','plugin','showconvoluted.py'):2009, ('hooke','plugin','tutorial.py'):2007, + ('hooke','ui','gui','formatter.py'):2006, + ('hooke','ui','gui','prettyformat.py'):2009, } # Helpers for VCS-specific commands @@ -146,10 +178,13 @@ def authors(filename, author_hacks=AUTHOR_HACKS): ret.extend(author_hacks[splitpath(filename)]) return ret -def authors_list(): +def authors_list(author_hacks=AUTHOR_HACKS): output,error = mercurial_cmd('log', '--follow', '--template', '{author}\n') - return list(set(output.splitlines())) + ret = list(set(output.splitlines())) + for path,authors in author_hacks.items(): + ret.extend(authors) + return ret def is_versioned(filename): output,error = mercurial_cmd('log', '--follow', @@ -400,9 +435,11 @@ def _set_contents(filename, contents, original_contents=None, dry_run=False, # Update commands def update_authors(authors_fn=authors_list, dry_run=False, verbose=0): + authors = authors_fn() + authors = _replace_aliases(authors, with_email=True, aliases=ALIASES) new_contents = '%s was written by:\n%s\n' % ( PROJECT_INFO['project'], - '\n'.join(authors_fn()) + '\n'.join(authors) ) _set_contents('AUTHORS', new_contents, dry_run=dry_run, verbose=verbose)