Mercurial > pub > Impl
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; |
