Reorganize directory
This commit is contained in:
parent
12dce591bb
commit
10e3e1f745
26 changed files with 371 additions and 477 deletions
125
file_processing/lib/ProcessDirectories.pm
Normal file
125
file_processing/lib/ProcessDirectories.pm
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
package ProcessDirectories;
|
||||
use Modern::Perl;
|
||||
# VERSION
|
||||
# AUTHORITY
|
||||
# ABSTRACT: Get current subdirectories in current year directory and copy to archive directory
|
||||
use Carp qw( croak );
|
||||
use File::Basename;
|
||||
use File::Find::Rule;
|
||||
use File::Copy::Recursive qw(dircopy);
|
||||
use File::DirCompare;
|
||||
use Pod::Usage;
|
||||
# use Time::Piece qw/localtime/;
|
||||
|
||||
sub create_archive_dirs {
|
||||
my ( $source_dir, $dest_dir ) = @_;
|
||||
unless ( -d $source_dir ) {
|
||||
die "Source directory '$source_dir' does not exist, please create it";
|
||||
}
|
||||
|
||||
print("Copying current directories to archive folder\n");
|
||||
print("From: $source_dir\n");
|
||||
print("To: $dest_dir\n");
|
||||
dircopy( $source_dir, $dest_dir )
|
||||
or croak "Could not copy directories $!";
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sub compare_dirs {
|
||||
my ( $dir1, $dir2 ) = @_;
|
||||
my $same = 1;
|
||||
print("Making sure all directories and files match between source and destination\n");
|
||||
File::DirCompare->compare(
|
||||
$dir1, $dir2,
|
||||
sub {
|
||||
my ( $a, $b ) = @_;
|
||||
if ( !$b ) {
|
||||
printf "Only in %s: %s\n", dirname($a), basename($a);
|
||||
$same = 0;
|
||||
}
|
||||
elsif ( !$a ) {
|
||||
printf "Only in %s: %s\n", dirname($b), basename($b);
|
||||
$same = 0;
|
||||
}
|
||||
else {
|
||||
print "Files $a and $b differ\n";
|
||||
$same = 0;
|
||||
}
|
||||
}
|
||||
);
|
||||
return $same;
|
||||
}
|
||||
|
||||
sub clean_dirs {
|
||||
my ( $new_dir, $old_dir, $curr_year, $last_year ) = @_;
|
||||
|
||||
my @this_year_files =
|
||||
File::Find::Rule->file()->name("*$curr_year*")->in($old_dir);
|
||||
my @last_year_files =
|
||||
File::Find::Rule->file()->name("*$last_year*")->in($new_dir);
|
||||
|
||||
unlink @this_year_files;
|
||||
print("Deleted all files for $curr_year from the folder for $last_year\n");
|
||||
unlink @last_year_files;
|
||||
print("Deleted all files for $last_year from the folder for $curr_year\n");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
ProcessDirectories
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Methods for copying and processing a directory of files for the past year and this year
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use ProcessDirectories
|
||||
|
||||
create_archive_dirs ( $source_dir, $dest_dir );
|
||||
compare_dirs( $source_dir, $dest_dir );
|
||||
clean_dirs( $source_dir, $dest_dir, $year, $lastyear );
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2
|
||||
C<create_archive_dirs>: Copies the directory structure and contents of a source file to the archive / destination directory.
|
||||
|
||||
=head3
|
||||
Usage:
|
||||
create_archive_dirs( $source_dir, $destination_dir );
|
||||
|
||||
=head2
|
||||
C<compare_dirs>: Compares the content of two specified directories. Provides feedback on the results. Returns 1 if the source and destination match, 0 otherwise.
|
||||
|
||||
=head3
|
||||
Usage:
|
||||
compare_dirs( $source_dir, $destination_dir );
|
||||
|
||||
=head2
|
||||
C<clean_dirs>: This method accepts the following parameters:
|
||||
|
||||
=over 4
|
||||
|
||||
=item source_dir
|
||||
|
||||
=item destination_dir
|
||||
|
||||
=item this_year
|
||||
|
||||
=item last_year
|
||||
|
||||
=back
|
||||
|
||||
=head3
|
||||
Usage:
|
||||
clean_dirs( $source_dir, $destination_dir, 2023, 2022 );
|
||||
|
||||
=cut
|
||||
Loading…
Add table
Add a link
Reference in a new issue