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 )