| #!/bin/sh |
| |
| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # |
| # Simple shell script that checks whether changed files contain a copyright |
| # statement for a given year. |
| # |
| # Rename (or symlink) this script to the year you want to check, i.e. name it |
| # 2002 if you want to check for copyright statements that do not contain |
| # the year 2002. |
| # |
| # Use this script instead of your usual cvs update command. |
| # |
| # Usage YEAR [precommit] |
| # |
| # If the optional all argument has been omitted, the proposal directory will |
| # be skipped. |
| # |
| |
| if [ -n "$TMP" ]; then |
| TEMP_DIR="$TMP" |
| else |
| if [ -n "$TEMP" ]; then |
| TEMP_DIR="$TEMP" |
| else |
| TEMP_DIR=/tmp |
| fi |
| fi |
| |
| YEAR=`basename $0` |
| |
| if [ $YEAR = yearcheck.sh ]; then |
| YEAR=`date -R | cut -d ' ' -f 4` |
| fi |
| |
| precommit_call=false |
| for arg in "$@" ; do |
| if [ "$arg" = "precommit" ] ; then |
| precommit_call=true |
| fi |
| done |
| |
| if [ -d ".svn" ]; then |
| SCM_COMMAND=svn |
| if $precommit_call ; then |
| SCM_ARGS=status |
| CUT_ARGS="-c 8-" |
| else |
| SCM_ARGS=up |
| CUT_ARGS="-c 4-" |
| fi |
| else |
| SCM_COMMAND=cvs |
| SCM_ARGS="-z3 update -dP" |
| CUT_ARGS="-d ' ' -f 2" |
| fi |
| |
| "$SCM_COMMAND" $SCM_ARGS > "$TEMP_DIR"/update-prefilter |
| |
| # filter out boring lines |
| if [ "$SCM_COMMAND" = "svn" ]; then |
| < "$TEMP_DIR"/update-prefilter fgrep -v 'At revision' | fgrep -v 'Updated to revision' | egrep -v '^\?' > "$TEMP_DIR"/update |
| else |
| cp "$TEMP_DIR"/update-prefilter "$TEMP_DIR"/update |
| fi |
| |
| cut $CUT_ARGS < "$TEMP_DIR"/update > "$TEMP_DIR"/changed-files |
| |
| echo "Changed:" |
| echo "========" |
| cat "$TEMP_DIR"/changed-files |
| echo |
| |
| xargs fgrep -L Copyright < "$TEMP_DIR"/changed-files > "$TEMP_DIR"/no-copyright |
| |
| echo "No Copyright line" |
| echo "=================" |
| cat "$TEMP_DIR"/no-copyright |
| echo |
| |
| xargs egrep -L "Copyright.*$YEAR" < "$TEMP_DIR"/changed-files | cut -f 1 -d : > "$TEMP_DIR"/no-$YEAR |
| |
| echo "No Copyright line for year $YEAR" |
| echo "================================" |
| cat "$TEMP_DIR"/no-$YEAR |
| |
| rm "$TEMP_DIR"/no-$YEAR "$TEMP_DIR"/no-copyright "$TEMP_DIR"/changed-files "$TEMP_DIR"/update "$TEMP_DIR"/update-prefilter |