util/add-depends.pl: add the possibility for debug printouts
[openssl.git] / util / openssl-update-copyright
1 #!/usr/bin/env bash
2 #
3 # Copyright 2018 The OpenSSL Project Authors. All Rights Reserved.
4 #
5 # Licensed under the OpenSSL license (the "License").  You may not use
6 # this file except in compliance with the License.  You can obtain a copy
7 # in the file LICENSE in the source distribution or at
8 # https://www.openssl.org/source/license.html
9
10
11 myname="$(basename $0)"
12
13 this_year="$(date '+%Y')"
14 some_year="[12][0-9][0-9][0-9]"
15 year_range="(${some_year})(-${some_year})?"
16
17 copyright_owner="The OpenSSL Project"
18 copyright="Copyright .*${year_range} .*${copyright_owner}"
19
20 # sed_script:
21 #   for all lines that contain ${copyright} : {
22 #     replace years yyyy-zzzz (or year yyyy) by yyyy-${this_year}
23 #     replace repeated years yyyy-yyyy by yyyy
24 #   }
25 sed_script="/${copyright}/{ s/${year_range}/\1-${this_year}/ ; s/(${some_year})-\1/\1/ }"
26
27 function usage() {
28         cat >&2 <<EOF
29 usage: $myname [-h|--help] [file|directory] ...
30
31 Updates the year ranges of all OpenSSL copyright statements in the given
32 files or directories. (Directories are traversed recursively.)
33 EOF
34 }
35
36 if [ $# -eq 0 ]; then
37         usage
38         exit 0
39 fi
40
41
42 for arg in "$@"; do
43         case $arg in
44                 -h|--help)
45                         usage
46                         exit 0
47                         ;;
48                 -*)
49                         echo -e "illegal option: $arg\n" >& 2
50                         usage
51                         exit 1
52                         ;;
53                 *)
54                         if [ -f "$arg" ]; then
55                                 sed -E -i "${sed_script}" "$arg"
56                         elif [ -d "$arg" ]; then
57                                 find "$arg" -name '.[a-z]*' -prune -o -type f -exec sed -E -i "${sed_script}" {} +
58                         else
59                                 echo "$arg: no such file or directory" >&2
60                         fi
61                         ;;
62         esac
63 done