From f6ccdbbf696790eccf6a3266134a0efd252d616f Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Sat, 9 Jan 2016 08:43:13 +0200 Subject: Add copyright management script --- copyright | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100755 copyright (limited to 'copyright') 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 () # +{ + 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 -- cgit v1.1