64 lines
1.5 KiB
Plaintext
64 lines
1.5 KiB
Plaintext
|
#!/usr/bin/env bash
|
||
|
#
|
||
|
# Copyright 2018 The OpenSSL Project Authors. All Rights Reserved.
|
||
|
#
|
||
|
# Licensed under the OpenSSL license (the "License"). You may not use
|
||
|
# this file except in compliance with the License. You can obtain a copy
|
||
|
# in the file LICENSE in the source distribution or at
|
||
|
# https://www.openssl.org/source/license.html
|
||
|
|
||
|
|
||
|
myname="$(basename $0)"
|
||
|
|
||
|
this_year="$(date '+%Y')"
|
||
|
some_year="[12][0-9][0-9][0-9]"
|
||
|
year_range="(${some_year})(-${some_year})?"
|
||
|
|
||
|
copyright_owner="The OpenSSL Project"
|
||
|
copyright="Copyright .*${year_range} .*${copyright_owner}"
|
||
|
|
||
|
# sed_script:
|
||
|
# for all lines that contain ${copyright} : {
|
||
|
# replace years yyyy-zzzz (or year yyyy) by yyyy-${this_year}
|
||
|
# replace repeated years yyyy-yyyy by yyyy
|
||
|
# }
|
||
|
sed_script="/${copyright}/{ s/${year_range}/\1-${this_year}/ ; s/(${some_year})-\1/\1/ }"
|
||
|
|
||
|
function usage() {
|
||
|
cat >&2 <<EOF
|
||
|
usage: $myname [-h|--help] [file|directory] ...
|
||
|
|
||
|
Updates the year ranges of all OpenSSL copyright statements in the given
|
||
|
files or directories. (Directories are traversed recursively.)
|
||
|
EOF
|
||
|
}
|
||
|
|
||
|
if [ $# -eq 0 ]; then
|
||
|
usage
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
|
||
|
for arg in "$@"; do
|
||
|
case $arg in
|
||
|
-h|--help)
|
||
|
usage
|
||
|
exit 0
|
||
|
;;
|
||
|
-*)
|
||
|
echo -e "illegal option: $arg\n" >& 2
|
||
|
usage
|
||
|
exit 1
|
||
|
;;
|
||
|
*)
|
||
|
if [ -f "$arg" ]; then
|
||
|
sed -E -i "${sed_script}" "$arg"
|
||
|
elif [ -d "$arg" ]; then
|
||
|
find "$arg" -name '.[a-z]*' -prune -o -type f -exec sed -E -i "${sed_script}" {} +
|
||
|
else
|
||
|
echo "$arg: no such file or directory" >&2
|
||
|
fi
|
||
|
;;
|
||
|
esac
|
||
|
done
|