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

Создан репозитарий
author Sergey
date Tue, 14 Jul 2009 12:54:37 +0400
parents
children 16ada169ca75
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Lib/Deployment/Batch/Backup.pm	Tue Jul 14 12:54:37 2009 +0400
@@ -0,0 +1,48 @@
+package Deployment::Batch::Backup;
+use base qw(Deployment::Batch::Generic);
+use Common;
+use File::Copy;
+
+BEGIN {
+    DeclareProperty Action => ACCESS_READ;
+}
+
+sub CTOR {
+    my ($this,$actionName,$actionArg) = @_;
+
+    $this->{$Action} = { Name => $actionName, Arg => $actionArg };
+}
+
+sub Run {
+    my ($this) = @_;
+
+    my $tmpObj;
+    
+    # we are in the immediate mode
+    if ($this->{$Action}{Name} eq 'File') {
+        $this->Log("Backup file: $this->{$Action}{Arg}");
+        if (-e $this->{$Action}{Arg}) {
+
+            Deployment::Batch->Temp( File => \$tmpObj ) or die "Failed to create temp file" ;
+        
+            copy ($this->{$Action}{Arg}, $tmpObj->filename) or die "Failed to backup";
+            $this->{$Action}{Result} = $tmpObj->filename;
+        }
+    } else {
+        die "Don't know how to backup the $this->{$Action}{Name}";
+    }
+}
+
+sub Rollback {
+    my ($this) = @_;
+    if ($this->{$Action}{Name} eq 'File') {
+        $this->Log("Revert file: $this->{$Action}{Arg}");
+        if ($this->{$Action}{Result}) {
+            copy ($this->{$Action}{Result}, $this->{$Action}{Arg}) or die "Failed to backup";
+        } else {
+            unlink $this->{$Action}{Arg} if -f $this->{$Action}{Arg};
+        }
+    }
+}
+
+1;
\ No newline at end of file