source: trunk/svn_add_id.sh @ 1366

Last change on this file since 1366 was 1366, checked in by bradbell, 11 years ago

add copyright message to front

  • Property svn:executable set to *
File size: 4.3 KB
Line 
1# ! /bin/bash
2# $Id$
3# -----------------------------------------------------------------------------
4# CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-09 Bradley M. Bell
5#
6# CppAD is distributed under multiple licenses. This distribution is under
7# the terms of the
8#                     Common Public License Version 1.0.
9#
10# A copy of this license is included in the COPYING file of this distribution.
11# Please visit http://www.coin-or.org/CppAD/ for information on other licenses.
12# -----------------------------------------------------------------------------
13#
14# Each of the cases in ext_list and file_list must be handled by the
15#       case "$ext" in
16# statment in the script below.
17#
18# List of extensions that are handled by svn_add_id.sh.
19# Spaces must surround each entry.
20ext_list=" .sh .py .bat .c .h .cpp .hpp  .omh " 
21#
22# List of specific file names that are handled by svn_add_id.sh
23# Spaces must surround each entry.
24# No special grep pattern matching characters, except for '.', can be used.
25file_list=" makefile.am configure.ac "
26#
27# ----------------------------------------------------------------------------
28command="$0"
29directory="$1"
30dry_run="$2"
31if [ ! -d "$1" ] || ( [ "$2" != "" ] && [ "$2" != "--dry-run" ] )
32then
33        echo "\"$directory\" is not a directory"
34        echo
35        echo "usage: svn_add_id.sh directory --dry-run"
36        echo
37        echo "This command adds the Subversion keyword comamnd \$Id"
38        echo "to files in and below the specified directory."
39        echo
40        echo "If a file already has a Subversion \$Id comamnd, it is"
41        echo "not modified."
42        echo
43        echo "If --dry-run is specified, proposed changes are listed,"
44        echo "but no action is taken."
45        echo
46        echo "The shell variables ext_list and file_list determine which files"
47        echo "are checked; see the top of file $0" 
48        exit 1
49fi 
50#
51# list of files and subdirectories of the specified directory
52dir_list=`ls "$directory"`
53for name in $dir_list
54do
55        if [ -d "$directory/$name" ]
56        then
57                # This is a directory so run svn_add_id.sh on it
58                if ! $command "$directory/$name" "$dry_run"
59                then
60                        echo "Aborted $command $directory/$name $dry_run"
61                        exit 1
62                fi
63                # do not process this file
64                ext=""
65        else
66                ext=`echo $name | sed -e 's/.*\([.][^.]*\)/\1/' -e 's/[^.]*//'`
67                pattern=`echo "$ext" | sed -e 's/\.\(.*\)/ [.]\1 /'`
68                if ! echo "$ext_list" | grep "$pattern" > /dev/null
69                then
70                        # Not in extension list so do not process this file
71                        ext=""
72                else
73                        if grep '\$Id.*\$' $directory/$name > /dev/null
74                        then
75                                # $Id command is already in this file
76                                # so do not process it
77                                ext=""
78                        fi
79                fi
80                pattern=`echo "$name" | sed -e 's/\./[.]/g' -e 's/.*/ & /'`
81                if echo "$file_list" | grep "$pattern" > /dev/null
82                then
83                        if grep '\$Id.*\$' $directory/$name > /dev/null
84                        then
85                                # $Id command is already in this file
86                                # so do not process it
87                                ext=""
88                        fi
89                        ext="$name"
90                fi
91        fi
92        if [ "$ext" != "" ]
93        then
94                # Separate by cases in $ext_list or $file_list
95                case "$ext" in
96                        # Shell or python script file. Put Id command after
97                        # interpertor specification; e.g., ! /bin/bash
98                        .sh | .py )
99                        sed < $directory/$name > svn_add_id.$$ \
100                                -e '1,1s/^[^!]*$/# $Id$\n&/' \
101                                -e '1,1s/^# *!.*$/& \n# $Id$/'
102                        ;;
103
104                        # Dos batch file
105                       .bat )
106                        echo "rem \$Id\$" > svn_add_id.$$
107                        cat "$directory/$name" >> svn_add_id.$$
108                        ;;
109
110                        # C and C++ source code
111                       .c | .h | .cpp | .hpp )
112                        echo "/* \$Id\$ */" > svn_add_id.$$
113                        cat "$directory/$name" >> svn_add_id.$$
114                        ;;
115
116                        # OMhelp files
117                        .omh )
118                        echo "\$Id\$" > svn_add_id.$$
119                        cat "$directory/$name" >> svn_add_id.$$
120                        ;;
121
122                        # Automake input files
123                        makefile.am )
124                        sed < $directory/$name > svn_add_id.$$ \
125                                -e '1,1s/^.*$/# $Id$\n&/' 
126                        ;;
127
128                        # Autoconf input files
129                        configure.ac )
130                        sed < $directory/$name > svn_add_id.$$ \
131                                -e '1,1s/^.*$/dnl $Id$\n&/' 
132                        ;;
133
134                esac
135                # Must have matched one of the cases above because $ext is
136                # in $ext_list of $file_list
137                echo "$directory/$name"
138                if diff $directory/$name svn_add_id.$$
139                then
140                        echo "Cannot add \$Id command to $directory/$name"
141                        exit 1
142                fi
143                if [ "$dry_run" == "" ]
144                then
145                        if ! mv svn_add_id.$$ $directory/$name
146                        then
147                                echo "Cannot modify $directory/$name"
148                                exit 1
149                        fi
150                else
151                        if ! rm svn_add_id.$$
152                        then
153                                echo "Cannot remove svn_add_id.$$"
154                                exit 1
155                        fi
156                fi
157        fi
158done
159if [ -e svn_add_id.$$ ]
160then
161        echo "svn_add_id: file svn_add_id.$$ should have been deleted"
162        exit 1
163fi
164exit 0
Note: See TracBrowser for help on using the repository browser.