diff options
Diffstat (limited to 'hooks/pre-commit-copyright-check')
-rwxr-xr-x | hooks/pre-commit-copyright-check | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/hooks/pre-commit-copyright-check b/hooks/pre-commit-copyright-check deleted file mode 100755 index 1bdeffd..0000000 --- a/hooks/pre-commit-copyright-check +++ /dev/null @@ -1,70 +0,0 @@ -#! /usr/bin/env bash - -# Check copyright notices in the COPYRIGHT and LICENSE files and issue a -# warning if they don't include the current year. -# -# Specifically, look first for COPYRIGHT and then LICENSE in the root -# directory and all subdirectories in a project. -# -# Then in each file look for the first line matching the: -# -# ^Copyright (\([cC]\))? ... -# -# Regex, where "..." matches various year lists/ranges (e.g., "2010", "2010, -# 2011", "2010-2011", and their combinations; see the pattern below for -# details). Specifically, we don't consider Copyright notices that: -# -# - don't start at the very beginning of a line (indented, etc) -# - contain something other than years prior to the last year (names, etc) -# - wrap over multiple lines (long year list, etc) -# -# Note also that the current year is obtained in the UTC timezone. -# -trap 'exit 1' ERR -set -o errtrace # Trap in functions. - -function info () { echo "$*" 1>&2; } -function error () { info "$*"; exit 1; } - -# Recursively collect the COPYRIGHT and LICENSE files, skipping the LICENSE -# files in directories that contain the COPYRIGHT file. -# -# @@ Note that for now we assume that there are no spaces in the project file -# and directory names. -# -files=() - -fs=($(find . \( -type f -o -type l \) -name COPYRIGHT)) - -for f in "${fs[@]}"; do - files+=("$f") -done - -fs=($(find . \( -type f -o -type l \) -name LICENSE)) - -for f in "${fs[@]}"; do - d="$(dirname "$f")" - - if [ ! -f "$d/COPYRIGHT" ]; then - files+=("$f") - fi -done - -# Grep for the Copyright notice in the collected files and issue the warning -# if it is present and is outdated. -# -# @@ We should probably skip the COPYRIGHT/LICENSE files whose parent -# directories don't (recursively) contain staged files (think of projects -# with multiple packages, bundled third-party code, etc). Note that we can -# obtain the staged file list with the `git diff --name-only --cached` -# command. -# -current_year="$(date -u +'%Y')" - -for f in "${files[@]}"; do - year="$(sed -n -re 's%^Copyright( +\([cC]\))?[ 0-9,-]*[ ,-]([0-9]{4}).*$%\2%p' "$f" | head -n 1)" - - if [ -n "$year" -a "$year" != "$current_year" ]; then - info "WARNING: last copyright year in '${f#./}' is $year" - fi -done |