Csistck
view release on metacpan or search on metacpan
lib/Csistck/Test/FileBase.pm view on Meta::CPAN
package Csistck::Test::FileBase;
use 5.010;
use strict;
use warnings;
use base 'Csistck::Test';
use Csistck::Oper qw/debug/;
use Csistck::Util qw/backup_file hash_file hash_string/;
use Digest::MD5;
use File::Basename;
use File::Copy;
use FindBin;
use File::stat;
use Sys::Hostname::Long qw//;
sub desc { sprintf("File check on %s", shift->{target}); }
sub dest { shift->{target}; }
lib/Csistck/Test/FileBase.pm view on Meta::CPAN
my $self = shift;
my $ret = 1;
# If we defined a source file
if (defined($self->src) and $self->can('file_repair')) {
if (-e $self->dest) {
die("Destination ${\$self->dest} is not a file")
if (-d $self->dest);
die("Destination ${\$self->dest} exists is is not writable")
if (-f $self->dest and ! -w $self->dest);
backup_file($self->dest);
}
$ret &= $self->file_repair;
}
$ret &= $self->mode_process(\&mode_repair);
$ret &= $self->uid_process(\&uid_repair);
$ret &= $self->gid_process(\&gid_repair);
return (($ret == 1) ? $self->pass('File repaired') :
$self->fail('File not repaired'));
lib/Csistck/Util.pm view on Meta::CPAN
use 5.010;
use strict;
use warnings;
use base 'Exporter';
use FindBin;
use File::Copy;
use File::Temp;
our @EXPORT_OK = qw/
backup_file
hash_file
hash_string
package_manager
/;
use Csistck::Oper qw/debug info/;
use Csistck::Config qw/option/;
# Backup single file
sub backup_file {
my $file = shift;
debug("Backing up file: <file=$file>");
# Get absolute backup path
my $dest_base = option('backup_path') //
join '/', $FindBin::Bin, 'backup';
die("Backup path does not exist: path=<$dest_base>")
if (! -e $dest_base);
die("Backup path is not writable: path=<$dest_base>")
if (-e $dest_base and ! -w $dest_base);
# Generate temporary file to backup to using mangled path
my $tmp_template = $file;
$tmp_template =~ s/\W/_/g;
$tmp_template .= "-XXXXXX";
my $tmp = File::Temp->new(
TEMPLATE => $tmp_template,
DIR => $dest_base,
UNLINK => 0
);
my $dest = $tmp->filename;
( run in 1.169 second using v1.01-cache-2.11-cpan-49f99fa48dc )