c0360f1d660b0a8341becfe86072e7f5d5d19bec
[pkg-perl/packages/pkg-perl-tools.git] / scripts / rename-uploader
1 #!/bin/sh
2
3 # Documentation, Copyright & Licence below
4
5 die() {
6     echo $@ >&2
7     exit 1
8 }
9
10 if [ $# -ne 3 ]; then
11    die "Usage: $(basename $0) 'fullname' oldemail newemail"
12 fi
13
14 which sponge > /dev/null || die "Cannot find 'sponge'; apt-get install moreutils ?"
15
16 list_dirs(){
17     find $@ -maxdepth 1 -mindepth 1 -type d | sed 's,.*/,,' | sort -u
18 }
19
20 sub(){
21     perl -e 'my ($a, $b) = @ARGV; while(<STDIN>){ s/$a/$b/g; print; }' -- "$1" "$2"  < "$3" | sponge "$3"
22 }
23
24 for i in `list_dirs`; do
25     cd $i
26         echo "Processing $i"
27         if [ -d .git ] && ! git diff --quiet ; then
28             echo "Dirty git repo ($i), skipping"
29                 cd ..
30             continue
31     fi
32     for i in debian/control debian/copyright; do
33         sub "$2" "$3" $i
34         sub "$2" "$3" $i
35     done
36     if [ -d .git ] && ! git diff --quiet ; then
37         printf "\tUpdated email address\n"
38         dch --release-heuristic=changelog --no-auto-nmu "Email change: $1 -> $3"
39 # Uncomment the next 2 lines to use git to commit/push rather than doing a mass commit/push with mr at the end
40 #               git commit -a -m "Email change: $1 -> $3"
41 #               git push
42     fi
43     cd ..
44 done
45
46 echo <<EOF
47 Done. When happy do:
48
49  mr commit -m "Email change: $1 -> $3"
50  ssh git.debian.org touch /home/groups/pkg-perl/KGB-notifications-disabled
51  mr push
52  ssh git.debian.org rm /home/groups/pkg-perl/KGB-notifications-disabled
53 EOF
54
55 exit 0
56
57 POD=<<'EOF'
58 =head1 NAME
59
60 dpt-rename-uploader - handle maintainer email changes
61
62 =head1 SYNOPSIS
63
64 B<dpt rename-uploader> I<full name> I<old email> I<new email>
65
66 To be run from F<git/packages> directory.
67
68 =head1 DESCRIPTION
69
70 B<dpt rename-uploader> walks over all package directories and changes any
71 occurrences of author's old email address in F<debian/control> and
72 F<debian/copyright> with their new email address. It is handy when an uploader
73 became a Debian Developer and wants to use their L<me@debian.org> address.
74
75 A suitable entry is added to F<debian/changelog>, but nothing is committed.
76
77 Repositories with uncommitted changes are not touched and a warning is issued.
78
79 =head1 COPYRIGHT & LICENSE
80
81 Copyright: 2009, Ryan Niebur <ryan@debian.org>
82
83 =over
84
85 =item 2010, 2012 Salvatore Bonaccorso L<carnil@debian.org>
86
87 =item 2011, gregor herrmann L<gregoa@debian.org>
88
89 =item 2012, Nathan Handler L<nhandler@ubuntu.com>
90
91 =back
92
93 License: Artistic or GPL-1+
94
95 =cut
96 EOF