diff options
author | Tobias Hunger <tobias.hunger@theqtcompany.com> | 2016-01-15 14:47:40 +0100 |
---|---|---|
committer | Alessandro Portale <alessandro.portale@theqtcompany.com> | 2016-01-15 14:04:27 +0000 |
commit | 07dd7d5fe233a1c500332b4f3e8e6ec1e729f1d5 (patch) | |
tree | e76bd4f9d5f493cfe445c2693def94e3970d00e4 /scripts | |
parent | 9493d4764b4b4d3400b0ecfca96add85a4adc320 (diff) | |
download | qt-creator-07dd7d5fe233a1c500332b4f3e8e6ec1e729f1d5.tar.gz |
Update License according to aggrement with Free Qt Foundation
* Update license files in various places
* Update the license template
* Update README.md and appdata.xml
Change-Id: I0ae9365b15364728165e79ba8ad86dfdd6cb9ddd
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/updateCopyright.pl | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/scripts/updateCopyright.pl b/scripts/updateCopyright.pl new file mode 100755 index 0000000000..bd651812af --- /dev/null +++ b/scripts/updateCopyright.pl @@ -0,0 +1,207 @@ +#!/usr/bin/perl -w + +use strict; + +my $old_template = shift @ARGV; +my $new_template = shift @ARGV; +my $file = shift @ARGV; + +# Usage: git grep "(C) " | cut -d':' -f1 | sort -u | xargs -L 1 scripts/updateCopyright.pl old.header new.header + +# This will remove a verbatim copy of old.header from the file +# given as the last argument and then inserts the new.header +# instead. It may retain copyright year, copyright holder, author +# lines or "this file is part of" information. + +# All lines of the old.header are compared to the lines in the file. +# Exceptions are lines matching "Copyright (C) (\d+) ", "Author: " or +# "file is part of" which will must also match both the old.template +# as well as the file-line to be considered a match. + +# If there is no match between old.header and the start of file, then +# the file is skipped. + +### Set which information to keep from the file here: +my $keepYear = 0; +my $keepHolder = 1; +my $keepContact = 1; +my $keepPartOf = 1; +my $keepAuthors = 1; + +### Do not edit below this line... + +die "Usage: $0 /path/to/oldtemplate /path/to/newtemplate /path/to/file\n" unless $file; + +open TEMPLATE, "<$old_template" or die $!; +my @oldT = <TEMPLATE>; +close TEMPLATE; + +open TEMPLATE, "<$new_template" or die $!; +my @newT = <TEMPLATE>; +close TEMPLATE; + +open FILE, "<$file" or die $!; +my @contents = <FILE>; +close FILE; + +my $currentLineNo = -1; +my $oldLineNo = -1; +my @copyrightYear; +my @copyrightHolder; +my @authors; +my $contactInfo = ""; +my $partOf = ""; + +my $matched = 1; + +my $hadCopyright = 0; +my $hadAuthors = 0; + +foreach (@contents) { + last unless $matched; + + my $currentLine = $_; + ++$currentLineNo; + ++$oldLineNo unless $hadCopyright or $hadAuthors; + + last if $oldLineNo == @oldT; + + my $oldLine = $oldT[$oldLineNo]; + + # print "$currentLineNo: $currentLine"; + # print "old: $oldLine"; + + if ($currentLine =~ / Copyright .C. (\d+) (.*)$/i) { + $hadAuthors = 0; + + push(@copyrightYear, $1); + my $holder = $2; + # sanitize "Copyright (C) 2014 - 2016 whoever" + if ($holder =~ /^- \d\d\d\d (.*)$/) { $holder = $1; } + push(@copyrightHolder, $holder); + + ## print " Found copyright ($1, $2)...\n"; + + if (!$hadCopyright) { + $hadCopyright = 1; + ++$oldLineNo; + $matched = 0 unless $oldLine =~ / Copyright .C. \d+ /i; + ### print " matched copyright: $matched\n"; + } + next; + } + $hadCopyright = 0; + + if ($currentLine =~ / Author: (.*)$/i) { + push(@authors, $1); + + ## print " Found author...\n"; + + if (!$hadAuthors) { + $hadAuthors = 1; + ++$oldLineNo; + $matched = 0 unless $oldLine =~ / Author: /i; + ### print " matched author: $matched\n"; + } + next; + } + $hadAuthors = 0; + + if ($currentLine =~ / Contact: (.*)$/i) { + $contactInfo = $1; + ## print " Found contact...\n"; + $matched = 0 unless $oldLine =~ / Contact: /i; + ### print " matched contact: $matched\n"; + next; + } + if ($currentLine =~ / file is part of (.*)$/) { + $partOf = $1; + ## print " Found part of...\n"; + $matched = 0 unless $oldLine =~ / file is part of /; + ### print " matched partOf: $matched\n"; + next; + } + $matched = 0 unless $oldLine eq $currentLine; + ### print " GENERIC: $matched\n"; +} + +if (!$matched) { + print "$file: did not match input template. Skipping.\n"; + exit 0; +} + +# remove empty lines... +++$currentLineNo while ($currentLineNo < @contents and $contents[$currentLineNo] =~ /^\s*$/); + +splice @contents, 0, $currentLineNo; + +print "Contents found in $file:\n"; +print "Copyright:\n"; +for (my $i = 0; $i < @copyrightYear; ++$i) { + print " " . $copyrightYear[$i] . " - " . $copyrightHolder[$i] . ".\n"; +} +print "Authors:\n"; +foreach (@authors) { print " $_...\n"; } +print "Contact: $contactInfo...\n"; + +### Write file: +my $hasEmptyLine = 0; +open FILE, ">$file" or die "Failed to write into $file: $!.\n"; + +foreach (@newT) { + my $currentLine = $_; + + $hasEmptyLine = ($currentLine =~ /^\s*$/); + + if ($currentLine =~ /^(.* Copyright .C.) (\d+) (.*)$/i) { + my $prefix = $1; + my $year = $2; + my $holder = $3; + if ($keepYear || $keepHolder) { + for (my $i = 0; $i < @copyrightYear; ++$i) { + my $y = $year; + $y = $copyrightYear[$i] if $keepYear; + my $h = $holder; + $h = $copyrightHolder[$i] if $keepHolder; + print FILE "$prefix $y $h\n"; + } + next; + } + } + + if ($currentLine =~ /^(.* Author:) (.*)$/i) { + my $prefix = $1; + my $author = $2; + + if ($keepAuthors) { + foreach (@authors) { print FILE "$prefix $_\n"; } + next; + } + } + + if ($currentLine =~ /^(.* Contact:) (.*)$/i) { + my $prefix = $1; + $contactInfo = $2 unless $contactInfo; + if ($keepContact) { + print FILE "$prefix $contactInfo\n"; + next; + } + } + + if ($currentLine =~ /^(.* file is part of) (.*)$/) { + my $prefix = $1; + if ($keepPartOf) { + $partOf = $2 unless $partOf; + print FILE "$prefix $partOf\n"; + next; + } + } + + print FILE $currentLine; +} + +print FILE "\n" unless ($hasEmptyLine); + +foreach (@contents) { print FILE $_; } + +close FILE; |