summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-01-09 08:43:13 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-01-09 08:43:13 +0200
commitf6ccdbbf696790eccf6a3266134a0efd252d616f (patch)
tree6548c2c8489202705422c84b30dd92bf7d50fcfb
parentf1ee42dfd6f9d6796a9dcc5e351b53d58c873ba3 (diff)
Add copyright management script
-rwxr-xr-xcopyright79
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