diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2016-01-09 08:43:13 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2016-01-09 08:43:13 +0200 |
commit | f6ccdbbf696790eccf6a3266134a0efd252d616f (patch) | |
tree | 6548c2c8489202705422c84b30dd92bf7d50fcfb | |
parent | f1ee42dfd6f9d6796a9dcc5e351b53d58c873ba3 (diff) |
Add copyright management script
-rwxr-xr-x | copyright | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/copyright b/copyright new file mode 100755 index 0000000..3c8488b --- /dev/null +++ b/copyright @@ -0,0 +1,79 @@ +#! /usr/bin/env bash + +# Manage build2 toolchain copyright. +# +# Usage: copyright +# +usage="usage: $0" + +old=2015 +new=2016 + +# In extras we just grep for the old date. +# +modules="libbutl build2 libbpkg bpkg brep build2-toolchain" +extras="etc private" + +owd=`pwd` +trap "{ cd $owd; exit 1; }" ERR +set -o errtrace # Trap in functions. + +function info () { echo "$*" 1>&2; } +function error () { info "$*"; exit 1; } + + +# In-place sed. +# +function ised () # <regex> <file> +{ + local r=$1 + local f=$2 + local o=$f.orig + + mv $f $o + cp -p $o $f # Keep owner, permissions. + + if ! sed -e "$r" $o >$f; then + mv $o $f + return 1 + fi + + if cmp -s $o $f; then + mv $o $f + else + rm $o + fi +} + +for m in $modules; do + # Top-level directories inside the module to exclude. + # + exclude=.git + + # Exclude submodules in build2-toolchain. + # + if [ $m = "build2-toolchain" ]; then + exclude="$exclude bpkg build2 libbutl libbpkg" + fi + + fo= + if [ "$exclude" ]; then + fo="-type d (" + for e in $exclude; do + fo="$fo -path $m/$e -o" + done + fo="$fo -false ) -prune -o" + fi + fo="$fo -type f -print" + + for f in `find $m $fo`; do + ised "s/\(Copyright (c) [0-9]*\)-$old \(Code Synthesis\)/\1-$new \2/" $f + grep --color=auto --with-filename $old $f || true + done +done + +for m in $extras; do + for f in `find $m -type d -path $m/.git -prune -o -type f -print`; do + grep --color=auto --with-filename $old $f || true + done +done |