cPanel-SyncUtil
view release on metacpan or search on metacpan
scripts/cpanelsync_build_cpaddons_dir view on Meta::CPAN
# vendor
if ( $options{'v'} !~ m{^\w+$} ) {
$message .= "You must specify your Vendor name\n";
}
else {
$vendor = $options{'v'};
}
# sync script
if ( $options{'a'} eq 'sync' ) {
if ( !$options{'s'} || !-x $options{'s'} ) {
$message .= "Please specify the path to your sync script with -s\n";
}
else {
$clustersync =
$options{'s'} =~ m{^/} || $options{'s'} =~ m{^[.]}
? $options{'s'}
: "./$options{'s'}";
}
}
# action
if ( exists $options{'a'} ) {
if ( $options{'a'} ne 'bz2'
&& $options{'a'} ne 'all'
&& $options{'a'} ne 'lock'
&& $options{'a'} ne 'unlock'
&& $options{'a'} ne 'sync' ) {
$message .= "Option -a requires a valid argument (bz2|lock|unlock|sync|all) Note: all does bz2, unlock, then sync\n";
}
}
else {
$message .= "Action must be specified with the -a option (bz2|lock|unlock|sync|all)\n";
}
if ($message) {
print $message;
exit 1;
}
my $root = File::Spec->catdir( $cpaddons_root, $vendor );
chdir $cpaddons_root or die "Could not go into base dir: $!";
if ( $options{'a'} eq 'all' ) {
delete $options{'a'};
my @cmds;
for ( sort keys %options ) {
push @cmds, "-$_", $options{$_};
}
system $0, '-a', 'bz2', @cmds;
system $0, '-a', 'unlock', @cmds;
system $0, '-a', 'sync', @cmds;
exit;
}
cPanel::SyncUtil::_chown_pwd_recursively( $user, $group );
if ($clustersync) {
if ( -x $clustersync ) {
exec $clustersync, @ARGV if $options{'a'} eq 'sync';
}
else {
die "$clustersync is not executable";
}
}
if ( $options{'a'} eq 'bz2' ) {
cPanel::SyncUtil::_raw_dir( $cpaddons_root, 'cPAddonsAvailable', 1, cPanel::SyncUtil::_read_dir('./cPAddonsAvailable') )
or warn "_raw_dir cPAddonsAvailable/: $!";
my @md5files = grep { m/\.pm$/ } cPanel::SyncUtil::_read_dir('./cPAddonsMD5');
cPanel::SyncUtil::_raw_dir( $cpaddons_root, 'cPAddonsMD5', 1, @md5files )
or warn "_raw_dir cPAddonsMD5/: $!";
}
elsif ( $options{'a'} eq 'lock' ) {
cPanel::SyncUtil::_lock(qw(./ cPAddonsAvailable/ cPAddonsMD5/));
}
elsif ( $options{'a'} eq 'unlock' ) {
cPanel::SyncUtil::_unlock(qw(./ cPAddonsAvailable/ cPAddonsMD5/));
}
die "-c may only be one of the directories in $root"
if defined $options{'c'} && $options{'c'} ne '' && !-d "$root/$options{'c'}";
chdir $root or die "Could not go into $root: $!";
ROOT:
for my $dir ( cPanel::SyncUtil::_read_dir($root) ) {
next ROOT
if !cPanel::SyncUtil::_safe_cpsync_dir($dir)
|| ( defined $options{'c'} && $options{'c'} ne '' && $dir ne $options{'c'} );
cPanel::SyncUtil::_chown_pwd_recursively( $user, $group );
SUBDIR:
for my $name ( cPanel::SyncUtil::_read_dir($dir) ) {
next SUBDIR
if $name =~ /^\./
|| !cPanel::SyncUtil::_safe_cpsync_dir("$dir/$name")
|| ( defined $options{'n'} && $options{'n'} ne '' && $name !~ /^$options{'n'}/ );
if ( $options{'a'} eq 'bz2' ) {
system 'bzip2', '-k', "$dir/$name.pm";
cPanel::SyncUtil::_raw_dir( "$dir", $name, 1 )
or warn "cPanel::SyncUtil::_raw_dir $root/$dir: $!";
cPanel::SyncUtil::_sync_touchlock_pwd();
}
elsif ( $options{'a'} eq 'lock' ) {
cPanel::SyncUtil::_lock("$dir/$name/");
}
elsif ( $options{'a'} eq 'unlock' ) {
cPanel::SyncUtil::_unlock("$dir/$name/");
}
cPanel::SyncUtil::_chown_pwd_recursively( $user, $group );
}
}
( run in 0.667 second using v1.01-cache-2.11-cpan-5511b514fd6 )