#!/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 |