add hack/update-copyright-year.sh

This commit is contained in:
Ryan Richard 2023-01-18 13:36:23 -08:00
parent 53f56f328b
commit 3b46547efc
2 changed files with 52 additions and 10 deletions

View File

@ -1,26 +1,29 @@
#!/bin/bash #!/bin/bash
# Copyright 2021 the Pinniped contributors. All Rights Reserved. # Copyright 2021-2023 the Pinniped contributors. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
#
# Check if copyright statements include the current year set -euo pipefail
#
files=$(git diff --cached --name-only) files=$(git diff --cached --name-only)
year=$(date +"%Y") year=$(date +"%Y")
for f in $files; do missing_copyright_files=()
head -10 $f | grep -i copyright 2>&1 1>/dev/null || continue
if ! grep -i -e "copyright.*$year" $f 2>&1 1>/dev/null; then for f in $files; do
missing_copyright_files="$missing_copyright_files $f" head -10 "$f" | grep -i 'Copyright.*the Pinniped contributors' 2>&1 1>/dev/null || continue
if ! head -10 "$f" | grep -i -e "Copyright.*$year.*the Pinniped contributors" 2>&1 1>/dev/null; then
missing_copyright_files+=("$f")
fi fi
done done
if [ -n "$missing_copyright_files" ]; then if [[ "${#missing_copyright_files[@]}" -gt "0" ]]; then
echo "Copyright notice should include the year the file was created and the year the file was last modified." echo "Copyright notice should include the year the file was created and the year the file was last modified."
echo "$year is missing in the copyright notice of the following files:" echo "$year is missing in the copyright notice of the following files:"
for f in $missing_copyright_files; do for f in "${missing_copyright_files[@]}"; do
echo " $f" echo " $f"
done done
echo "Try using hack/update-copyright-year.sh to update the copyright automatically in staged files."
exit 1 exit 1
fi fi

39
hack/update-copyright-year.sh Executable file
View File

@ -0,0 +1,39 @@
#!/bin/bash
# Copyright 2021-2023 the Pinniped contributors. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
set -euo pipefail
if [[ "$OSTYPE" != "darwin"* ]]; then
echo "This script was only written for MacOS (due to differences with Linux sed flags)"
exit 1
fi
files=$(git diff --cached --name-only)
year=$(date +"%Y")
missing_copyright_files=()
for f in $files; do
head -10 "$f" | grep -i 'Copyright.*the Pinniped contributors' 2>&1 1>/dev/null || continue
if ! head -10 "$f" | grep -i -e "Copyright.*$year.*the Pinniped contributors" 2>&1 1>/dev/null; then
missing_copyright_files+=("$f")
fi
done
if [[ "${#missing_copyright_files[@]}" -gt "0" ]]; then
echo "Fixing copyright notice in the following files:"
for f in "${missing_copyright_files[@]}"; do
echo " $f"
# The rule when updating copyrights is to always keep the starting year,
# and to replace the ending year with the current year.
# This uses MacOS sed flags to replace "XXXX-YYYY" with "XXXX-year" in the copyright notice.
sed -E -e 's/Copyright ([0-9]{4})-([0-9]{4}) the Pinniped contributors/Copyright \1-2023 the Pinniped contributors/' -i '' "$f"
# This uses MacOS sed flags to replace "XXXX" with "XXXX-year" in the copyright notice.
sed -E -e 's/Copyright ([0-9]{4}) the Pinniped contributors/Copyright \1-2023 the Pinniped contributors/' -i '' "$f"
done
echo "Done!"
exit 1
fi