Czech translation
[gnumeric.git] / tools / grand-rename
blobe39bce302e12b451402d12e26eb7fe76731984c0
1 #!/usr/bin/perl -w
2 # -----------------------------------------------------------------------------
4 use strict;
6 die "$0: must be run from top-level directory.\n"
7 unless (-r "configure.ac" &&
8 -r 'ChangeLog' &&
9 -r 'po/POTFILES.in');
11 my $doit = ($ARGV[0] && $ARGV[0] =~ /^--doit/ && shift);
13 my $oldname = $ARGV[0];
14 my $newname = $ARGV[1];
15 if (defined ($oldname) && !defined ($newname)) {
16 $newname = $oldname;
17 if ($oldname =~ /^_?[A-Z].*[a-z]/) {
18 $newname =~ s/(_*)/$1Gnm/;
19 } elsif ($oldname =~ /^[a-z0-9_]+$/) {
20 $newname =~ s/(_*)/$1gnm_/;
21 } elsif ($oldname =~ /^[A-Z0-9_]+$/) {
22 $newname =~ s/(_*)/$1GNM_/;
25 die "Usage $0 oldname newname\n" unless $oldname && $newname;
26 die "$0: oldname and newname must be different\n" if $oldname eq $newname;
28 my @files = &find_files ();
30 &do_files (\@files, 1);
31 if ($doit) {
32 print STDERR "Renaming $oldname to $newname\n";
33 &do_files (\@files, 0);
36 # -----------------------------------------------------------------------------
38 sub find_files {
39 my @files = ();
41 my %generated =
42 ('stamp.h' => 1,
43 'gnumeric-config.h' => 1,
44 'src/parser.c' => 1,
47 local (*FIL);
48 open (*FIL, "find . '(' -name '*.[chy]' -type f -print ')' -o " .
49 "'(' -type d '(' -name CVS -o -name intl -o -name macros ')' -prune ')' |") or
50 die "$0: Cannot run find command.\n";
51 while (<FIL>) {
52 chomp;
53 s|^\./||;
55 next if $generated{$_};
57 push @files, $_;
59 close (*FIL);
61 return @files;
64 # -----------------------------------------------------------------------------
66 sub do_files {
67 my ($pfiles,$test) = @_;
69 foreach my $filename (@$pfiles) {
70 local (*SRC);
71 local (*DST);
73 # print STDERR "Scanning $filename...\n";
74 my $newfilename = "$filename.new";
76 open (*SRC, "<$filename") || die "$0: Cannot read $filename: $!\n";
77 if (!$test) {
78 open (*DST, ">$newfilename") || die "$0: Cannot write $newfilename: $!\n";
81 my $didit = 0;
83 if ($test) {
84 my $lineno = 1;
85 foreach my $line (<SRC>) {
86 my $linecopy = $line;
87 $line =~ s/\b$oldname\b/$newname/g;
88 $line =~ s/\b$newname\b/$oldname/g;
89 if ($line ne $linecopy) {
90 chomp ($linecopy);
91 die "$0: Rename clash in $filename, line $lineno: $linecopy <-> $line\n";
93 $lineno++;
95 } else {
96 foreach my $line (<SRC>) {
97 $didit = 1 if $line =~ s/\b$oldname\b/$newname/g;
98 print DST $line;
101 close (*SRC);
103 if (!$test) {
104 close (*DST);
105 if ($didit) {
106 rename $newfilename, $filename;
107 } else {
108 unlink $newfilename;
114 # -----------------------------------------------------------------------------