#! /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