From 51b8a73479b39ba617d731816dec3699285e3036 Mon Sep 17 00:00:00 2001 From: Olivier Thauvin Date: Sun, 29 May 2011 19:13:33 +0000 Subject: - initiate script to fork distrib --- fork-distribution | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100755 fork-distribution diff --git a/fork-distribution b/fork-distribution new file mode 100755 index 0000000..b91c8eb --- /dev/null +++ b/fork-distribution @@ -0,0 +1,61 @@ +#!/bin/env perl + +# $Id$ + +use strict; +use warnings; +use Pod::Usage; +use Getopt::Long; +use MDV::Distribconf; +use Cwd; + +GetOptions( +) or pod2usage(1); + +my ($source,$dest) = @ARGV; + +$dest or do { + warn "No dest given"; + pod2usage(1); +}; + +# Constant: + +{ + my @distribdir = find_distrib($source); + warn join(' ', @distribdir); + fork_tree($source, $dest); +} + +sub find_distrib { + my ($topdir) = @_; + my @distpath; + if (opendir(my $handle, $topdir)) { + while (my $subdir = readdir($handle)) { + $subdir eq '..' and next; + my $d = MDV::Distribconf->new("$topdir/$subdir"); + if ($d->load){ + push(@distpath, $subdir); + } + } + closedir($handle) + } else { + die "Cannot open $topdir: $!"; + } + return @distpath; +} + +sub fork_tree { + my ($source, $dest) = @_; + + my $abs_source = Cwd::abs_path($source) || $source; + my $abs_dest = Cwd::abs_path($dest) || $dest; + + my @basecmd = (qw(rsync -avPHS), ("$abs_source/"), ("$abs_dest/")); + my @cmd; + + @cmd = (@basecmd, qw(--exclude *.rpm)); + system(@cmd); + @cmd = (@basecmd, '--link-dest', "$abs_source/"); + system(@cmd); +} -- cgit v1.2.1