Changeset 431 for wiki-toolkit/trunk/bin/wiki-toolkit-revert-to-date
- Timestamp:
- 05/11/08 17:04:41 (4 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
wiki-toolkit/trunk/bin/wiki-toolkit-revert-to-date
r397 r431 13 13 "date=s" => \$date, 14 14 "time=s" => \$time, 15 );15 ); 16 16 17 17 unless (defined($dbtype)) { … … 28 28 29 29 unless (defined($date)) { 30 print "You must supply the date with the --date option.\n";31 print "Further help can be found by typing 'perldoc $0'\n";32 exit 1;30 print "You must supply the date with the --date option.\n"; 31 print "Further help can be found by typing 'perldoc $0'\n"; 32 exit 1; 33 33 } 34 34 35 35 unless ($date =~ /^\d{4}\-\d{2}\-\d{2}$/) { 36 print "You must supply the date with --date in the format YYYY-MM-DD.\n";37 print "Further help can be found by typing 'perldoc $0'\n";38 exit 1;36 print "You must supply the date with --date in the format YYYY-MM-DD.\n"; 37 print "Further help can be found by typing 'perldoc $0'\n"; 38 exit 1; 39 39 } 40 40 unless (!$time || $time =~ /^\d{2}:\d{2}:\d{2}$/) { 41 print "You must supply either no time, or the time in the format HH:MM:SS.\n";42 print "Further help can be found by typing 'perldoc $0'\n";43 exit 1;41 print "You must supply either no time, or the time in the format HH:MM:SS.\n"; 42 print "Further help can be found by typing 'perldoc $0'\n"; 43 exit 1; 44 44 } 45 45 … … 50 50 51 51 my %setup_modules = ( postgres => "Wiki::Toolkit::Store::Pg", 52 mysql => "Wiki::Toolkit::Store::MySQL",53 sqlite => "Wiki::Toolkit::Store::SQLite"52 mysql => "Wiki::Toolkit::Store::MySQL", 53 sqlite => "Wiki::Toolkit::Store::SQLite" 54 54 ); 55 55 … … 72 72 my $store; 73 73 my $args = "dbname=>'$dbname', dbuser=>'$dbuser'"; 74 if($dbpass) { $args .= ", dbpass=>'$dbpass'"; } 75 if($dbhost) { $args .= ", dbhost=>'$dbhost'"; } 76 if($dbport) { $args .= ", dbport=>'$dbport'"; } 74 if($dbpass) { 75 $args .= ", dbpass=>'$dbpass'"; 76 } 77 if($dbhost) { 78 $args .= ", dbhost=>'$dbhost'"; 79 } 80 if($dbport) { 81 $args .= ", dbport=>'$dbport'"; 82 } 77 83 eval "\$store = $class->new($args);"; 78 84 … … 81 87 82 88 # Grab the state as of then 83 if($time) { $date .= " ".$time; } 89 if($time) { 90 $date .= " ".$time; 91 } 84 92 print "Reverting to the state as of $date\n"; 85 93 86 94 my @nodes = $wiki->list_last_version_before($date); 87 95 foreach my $node (@nodes) { 88 my %newnode = $wiki->retrieve_node($node->{name}); 89 my $thenver = $node->{version}; 90 if($thenver) { $thenver = sprintf("v%02d", $thenver); } 91 else { $thenver = "(d)"; } 92 93 print sprintf(' %03d - %s (now v%02d) - %s', $node->{id}, $thenver, $newnode{version}, $node->{name})."\n"; 96 my %newnode = $wiki->retrieve_node($node->{name}); 97 my $thenver = $node->{version}; 98 if($thenver) { 99 $thenver = sprintf("v%02d", $thenver); } 100 else { 101 $thenver = "(d)"; 102 } 103 104 print sprintf(' %03d - %s (now v%02d) - %s', $node->{id}, $thenver, $newnode{version}, $node->{name})."\n"; 94 105 } 95 106 … … 98 109 chomp $ok; 99 110 unless($ok eq "y") { 100 die("Aborting revert\n");111 die("Aborting revert\n"); 101 112 } 102 113 103 114 # Revert each node 104 115 foreach my $node (@nodes) { 105 if($node->{version}) {106 # Delete versions between now and then107 my %newnode = $wiki->retrieve_node($node->{name});108 for(my $ver=$newnode{version}; $ver>$node->{version}; $ver--) {109 $wiki->delete_node(110 name=>$node->{name},111 version=>$ver,112 wiki=>$wiki113 );114 print sprintf('Deleted node v%02d of %03d - %s',$ver, $node->{id},$node->{name})."\n";115 }116 } else {117 # No version then, delete118 $wiki->delete_node(119 name=>$node->{name},120 wiki=>$wiki121 );122 print sprintf('Deleted node %03d - %s',$node->{id},$node->{name})."\n";123 }116 if($node->{version}) { 117 # Delete versions between now and then 118 my %newnode = $wiki->retrieve_node($node->{name}); 119 for (my $ver=$newnode{version}; $ver>$node->{version}; $ver--) { 120 $wiki->delete_node( 121 name=>$node->{name}, 122 version=>$ver, 123 wiki=>$wiki 124 ); 125 print sprintf('Deleted node v%02d of %03d - %s',$ver, $node->{id},$node->{name})."\n"; 126 } 127 } else { 128 # No version then, delete 129 $wiki->delete_node( 130 name=>$node->{name}, 131 wiki=>$wiki 132 ); 133 print sprintf('Deleted node %03d - %s',$node->{id},$node->{name})."\n"; 134 } 124 135 } 125 136 … … 127 138 print "\nDone revert to $date\n"; 128 139 129 130 140 =head1 NAME 131 141 … … 138 148 139 149 wiki-toolkit-revert-to-date --type postgres 140 --name mywiki \141 --user wiki \142 --pass wiki \143 --host 'db.example.com' \144 --port 1234 \145 --date 2007-01-05 \146 --time 11:23:21150 --name mywiki \ 151 --user wiki \ 152 --pass wiki \ 153 --host 'db.example.com' \ 154 --port 1234 \ 155 --date 2007-01-05 \ 156 --time 11:23:21 147 157 148 158 =head1 DESCRIPTION
