Compilation: don't compile tools separately.
[gnumeric.git] / tools / grand-rename
blob78fc5a90484564981aa1dd9c8b56b3374bd53db4
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 $test = 1;
12 my $doit = 1;
14 while (@ARGV > 0) {
15 if ($ARGV[0] =~ /^--doit/) {
16 # Nothing -- this is now the default
17 } elsif ($ARGV[0] =~ /^--test/) {
18 $doit = 0;
19 scalar shift @ARGV;
20 } else {
21 last;
26 my $oldname = $ARGV[0];
27 my $newname = $ARGV[1];
28 if (defined ($oldname) && !defined ($newname)) {
29 $newname = $oldname;
30 if ($oldname =~ /^_?[A-Z].*[a-z]/) {
31 $newname =~ s/(_*)/$1Gnm/;
32 } elsif ($oldname =~ /^[a-z0-9_]+$/) {
33 $newname =~ s/(_*)/$1gnm_/;
34 } elsif ($oldname =~ /^[A-Z0-9_]+$/) {
35 $newname =~ s/(_*)/$1GNM_/;
38 die "Usage $0 oldname newname\n" unless $oldname && $newname;
39 die "$0: oldname and newname must be different\n" if $oldname eq $newname;
41 my @files = &find_files ();
43 if ($test) {
44 &do_files (\@files, 1);
46 if ($doit) {
47 print STDERR "Renaming $oldname to $newname\n";
48 &do_files (\@files, 0);
51 # -----------------------------------------------------------------------------
53 sub find_files {
54 my @files = ();
56 my %generated =
57 ('stamp.h' => 1,
58 'gnumeric-config.h' => 1,
59 'src/parser.c' => 1,
60 'src/dialogs/embedded-ui.c' => 1,
63 local (*FIL);
64 open (*FIL, "find . '(' -name '*.[chy]' -type f -print ')' -o " .
65 "'(' -type d '(' -name intl -o -name macros -o -name .git -o -name win32 ')' -prune ')' |") or
66 die "$0: Cannot run find command.\n";
67 while (<FIL>) {
68 chomp;
69 s|^\./||;
71 next if $generated{$_};
73 push @files, $_;
75 close (*FIL);
77 return @files;
80 # -----------------------------------------------------------------------------
82 sub do_files {
83 my ($pfiles,$test) = @_;
85 foreach my $filename (@$pfiles) {
86 local (*SRC);
87 local (*DST);
89 # print STDERR "Scanning $filename...\n";
90 my $newfilename = "$filename.new";
92 open (*SRC, "<$filename") || die "$0: Cannot read $filename: $!\n";
93 if (!$test) {
94 open (*DST, ">$newfilename") || die "$0: Cannot write $newfilename: $!\n";
97 my $didit = 0;
99 if ($test) {
100 my $lineno = 1;
101 foreach my $line (<SRC>) {
102 my $linecopy = $line;
103 $line =~ s/\b$oldname\b/$newname/g;
104 $line =~ s/\b$newname\b/$oldname/g;
105 if ($line ne $linecopy) {
106 chomp ($linecopy);
107 die "$0: Rename clash in $filename, line $lineno: $linecopy <-> $line\n";
109 $lineno++;
111 } else {
112 foreach my $line (<SRC>) {
113 $didit = 1 if $line =~ s/\b$oldname\b/$newname/g;
114 print DST $line;
117 close (*SRC);
119 if (!$test) {
120 close (*DST);
121 if ($didit) {
122 rename $newfilename, $filename;
123 } else {
124 unlink $newfilename;
130 # -----------------------------------------------------------------------------