]> Frank Brehm's Git Trees - my-stuff/postfix-maps.git/commitdiff
Mit Abarbeitung angefangen
authorFrank Brehm <frank@brehm-online.com>
Fri, 16 Jul 2010 21:21:13 +0000 (21:21 +0000)
committerFrank Brehm <frank@brehm-online.com>
Fri, 16 Jul 2010 21:21:13 +0000 (21:21 +0000)
git-svn-id: http://svn.brehm-online.com/svn/my-stuff/postfix-maps/trunk@104 ec8d2aa5-1599-4edb-8739-2b3a1bc399aa

lib/FrBr/Postfix/App.pm

index 326828bf511a175a3e3622714ab7feeea5ecc69e..64b0f23de5d59053641009630d353338f4a43bb9 100644 (file)
@@ -74,6 +74,32 @@ sub _build_postfixdir {
     return dir->new( '/etc/postfix' );
 }
 
+#-------------------------
+
+=head2 work_dir
+
+Arbeitsverzeichnis zum zeitweiligen Auschecken der Map-Dateien
+
+=cut
+
+has 'work_dir' => (
+    is              => 'rw',
+    isa             => 'Path::Class::Dir',
+    traits          => [ 'Getopt' ],
+    coerce          => 1,
+    lazy            => 1,
+    required        => 1,
+    builder         => '_build_workdir',
+    documentation   => 'Arbeitsverzeichnis zum zeitweiligen Auschecken, absolut oder relativ zu postfix_dir',
+    cmd_aliases     => [ 'work' ],
+);
+
+#------
+
+sub _build_workdir {
+    return dir->new( 'work' );
+}
+
 #---------------------------------------------------------------------------
 
 # Ändern der Eigenschaften einiger geerbter Attribute
@@ -93,6 +119,7 @@ sub _build_postfixdir {
 sub _build_default_config {
     return {
         postfix_dir => '/etc/postfix',
+        work_dir    => 'work',
         'Model::Schema' => {
             'schema_class'  => 'FrBr::Postfix::Db',
             'connect_info'  => {
@@ -167,7 +194,7 @@ after 'evaluate_config' => sub {
     $self->debug( "Werte Backup-Konfigurationsdinge aus ..." );
     return unless $self->config and keys %{ $self->config };
 
-    my @ConfigKeys = qw( postfix_dir );
+    my @ConfigKeys = qw( postfix_dir work_dir );
 
     for my $key ( keys %{ $self->config } ) {
 
@@ -200,6 +227,12 @@ after 'evaluate_config' => sub {
         $self->debug( sprintf( "Setze Postfix-Dir auf '%s' ...", $d ) ) if $self->verbose >= 2;
     }
 
+    unless ( $self->work_dir->is_absolute ) {
+        my $d = $self->work_dir;
+        $d = dir( $self->postfix_dir, $self->work_dir )->absolute;
+        $self->work_dir($d);
+        $self->debug( sprintf( "Setze Arbeitsverzeichnis auf '%s' ...", $d ) ) if $self->verbose >= 2;
+    }
 
 };
 
@@ -216,7 +249,7 @@ after 'init_app' => sub {
     if ( $self->verbose >= 2 ) {
 
         my $tmp;
-        for my $f ( 'postfix_dir', ) {
+        for my $f ( 'postfix_dir', 'work_dir',  ) {
             $tmp = $self->$f();
         }
 
@@ -240,6 +273,19 @@ sub run {
 
     $self->info( "Beginne Checkout der Mappings." );
 
+    # nur Root darf das Skript in der Produktionsversion ausführen
+    if ( $self->production_state eq 'prod' and $> != 0 ) {
+        $self->warn( "Nur root darf das Skript in der Produktionsversion ausführen." );
+        exit 1;
+    } 
+
+    unless ( -d $self->postfix_dir ) {
+        $self->error( sprintf( "Postfix-Verzeichnis '%s' existiert nicht oder ist kein Verzeichnis.", $self->postfix_dir ) );
+        exit 2;
+    }
+
+    $self->info( "Ende der Arbeit." );
+
 }
 
 #---------------------------------