comparison Lib/Deployment/Batch/Backup.pm @ 0:03e58a454b20

Создан репозитарий
author Sergey
date Tue, 14 Jul 2009 12:54:37 +0400
parents
children 16ada169ca75
comparison
equal deleted inserted replaced
-1:000000000000 0:03e58a454b20
1 package Deployment::Batch::Backup;
2 use base qw(Deployment::Batch::Generic);
3 use Common;
4 use File::Copy;
5
6 BEGIN {
7 DeclareProperty Action => ACCESS_READ;
8 }
9
10 sub CTOR {
11 my ($this,$actionName,$actionArg) = @_;
12
13 $this->{$Action} = { Name => $actionName, Arg => $actionArg };
14 }
15
16 sub Run {
17 my ($this) = @_;
18
19 my $tmpObj;
20
21 # we are in the immediate mode
22 if ($this->{$Action}{Name} eq 'File') {
23 $this->Log("Backup file: $this->{$Action}{Arg}");
24 if (-e $this->{$Action}{Arg}) {
25
26 Deployment::Batch->Temp( File => \$tmpObj ) or die "Failed to create temp file" ;
27
28 copy ($this->{$Action}{Arg}, $tmpObj->filename) or die "Failed to backup";
29 $this->{$Action}{Result} = $tmpObj->filename;
30 }
31 } else {
32 die "Don't know how to backup the $this->{$Action}{Name}";
33 }
34 }
35
36 sub Rollback {
37 my ($this) = @_;
38 if ($this->{$Action}{Name} eq 'File') {
39 $this->Log("Revert file: $this->{$Action}{Arg}");
40 if ($this->{$Action}{Result}) {
41 copy ($this->{$Action}{Result}, $this->{$Action}{Arg}) or die "Failed to backup";
42 } else {
43 unlink $this->{$Action}{Arg} if -f $this->{$Action}{Arg};
44 }
45 }
46 }
47
48 1;