[merged]
authorMatthias Förste <foerste@schlittermann.de>
Thu, 26 Apr 2018 11:46:36 +0200
changeset 53 d08f47fd8542
parent 52 8215da26b2fe (diff)
parent 44 21cf0d0ca51b (current diff)
child 54 db527181a90f
[merged]
tele-watch.pl
--- a/tele-watch.pl	Fri Mar 06 15:32:41 2015 +0100
+++ b/tele-watch.pl	Thu Apr 26 11:46:36 2018 +0200
@@ -35,7 +35,8 @@
 use File::Find;					# homepage hook
 
 my $ME      = basename $0;
-my $VERSION = "0.4:<VERSION>";
+my $VERSION = "0.4:b68c49bc006c+ tip
+";
 
 my $opt_block   = 1;
 my $opt_daemon  = 1;
@@ -59,6 +60,11 @@
 			# avoid execution of END{ } blocks
                         $clean_pids{$$} = 1;
 			chdir $dir or die "Can't chdir to $dir: $!\n";
+			for ('public') {
+				mkdir $_;
+				chown $uid, $gid => $_;
+				chmod $mode & 07777 => $_;
+			}
 			system("bzr init");
 			finddepth(sub {
 				chown($uid, $gid, $_);
@@ -67,6 +73,22 @@
 		}
 		wait;
 	},
+	Angebote => sub { 
+		my $dir = shift;
+		my ($uid, $gid, $mode) = (stat $dir)[4, 5, 2];
+		defined(my $pid = fork()) or die "Can't fork: $!\n";
+		if ($pid == 0) {
+			chdir $dir or die "Can't chdir to $dir: $!\n";
+			for ('subangebote') {
+                mkdir $_ => 0770;
+                $gid = getgrnam('PM');
+				chown $uid, $gid => $_;
+                chmod(02770, $_);
+			}
+			exec "true";	# avoid execution of END{ } blocks
+		}
+		wait;
+	},
 );
 
 my %clean_pids;
@@ -212,25 +234,40 @@
                 my ($uid, $gid, $mode) = (stat $fullname)[ 4, 5, 2 ];
 
 		# create a link to each directory found in $target/
-                foreach my $t (map { basename($_) } grep { -d } dir "$target/")
+                foreach my $t (map { basename($_) } grep { -d } reverse(dir "$target/"))
                 {
-                    my $dir  = "$target/$t/$e->{name}";
-                    my $link = "$fullname/$t";
-		    my $hook = $HOOK{$t} if exists $HOOK{$t}
-			                    and ref $HOOK{$t} eq "CODE";
+
+                        my $dir  = "$target/$t/$e->{name}"; 
+
+                        my $link = "$fullname/$t"; 
+                        my $hook = $HOOK{$t} if exists $HOOK{$t}
+                                    and ref $HOOK{$t} eq "CODE";
 
-                    if (!-e $dir) {
-                        notice "mkdir $dir";
-                        mkdir $dir => 0755;
-                        chown($uid, $gid, $dir);
-                        chmod($mode & 07777, $dir);
-                    }
+                        if (!-e $dir) {
+                            notice "mkdir $dir";
+                            if ($dir =~ /angebote/gi) {
+                                $gid = getgrnam('PM');
+                                mkdir $dir => 0770;
+                                chmod(02770, $dir);
+                            }
+                            else {
+                                mkdir $dir => 0755;
+                                chmod($mode & 07777, $dir);
+                            }
+                            
+                            chown($uid, $gid, $dir);
+                        }
 
-                    notice "symlink $dir <= $link";
-                    unlink $link;
-                    symlink $dir => $link;
+                        if ( "$link" =~ /angebote/gi )
+                        {
+                           $link = "$target/Korrespondenz/$e->{name}/Angebote"; 
+                        }
 
-		    $hook->($dir) if defined $hook;
+                        notice "symlink $dir <= $link";
+                        unlink $link;
+                        symlink $dir => $link;
+		                $hook->($dir) if defined $hook;
+
 
                 }
 		chmod(0555 => $fullname);
@@ -431,7 +468,8 @@
 
 =head1 VERSION
 
-This is <VERSION>.
+This is b68c49bc006c+ tip
+.
 
 =cut