$ cat 1.manifest
2.create.bash
11.clone.pl
1.initialize.pl
1.manifest
1.med
1.meditation
1.pop
1.qy
1.rings
2.med
5.create.sh
5.unicode
3.create.bash
$
####
$ cat 4.archive.pl
#!/usr/bin/perl -w
use 5.011;
use lib "template_stuff";
use utils2;
use Path::Tiny;
use utf8;
use open qw/:std :utf8/;
use Data::Dumper;
# initializations that must precede main data structure
my $fspecfile = File::Spec->rel2abs(__FILE__);
### does this^^^ have a Path::Tiny equivalent?
## turning things to Path::Tiny
my $path1 = Path::Tiny->cwd;
say "path1 is $path1";
my $title = $path1->basename;
say "base is $title";
# script parameters
my %vars = (
init_dir => $path1,
title => $title,
script_file => $fspecfile,
);
# caller
my $rvars = \%vars;
my $return1 = archive1( $rvars );
# returns created dir
chdir( $return1 );
system("pwd");
system("find .");
__END__
$
####
$ cat utils2.pm
package utils2;
require Exporter;
use utils1;
use utf8;
use open qw/:std :utf8/;
use Data::Dumper;
our @ISA = qw(Exporter);
our @EXPORT = qw( archive1 );
sub archive1 {
use warnings;
use 5.011;
use Path::Tiny;
my $rvars = shift;
my %vars = %$rvars;
say Dumper $rvars;
$vars{"grandfather"} = $vars{"init_dir"}->parent();
my $file1 = "1.manifest";
my $from = path( $vars{"grandfather"}, $file1 );
say "from is $from";
my @files = $from->lines_utf8( { chomp => 1 } );
say Dumper $rvars;
say "files are @files";
my $tempdir = Path::Tiny->tempdir('backup_XXXXXX');
say "temp dir is $tempdir";
my $readme = $tempdir->child( 'grandmother', 'README.txt' )->touchpath;
say "read me is $readme";
my $grand_dir = $readme->parent;
chdir $grand_dir;
foreach my $item (@files) {
say "item is <<$item>>";
next if ($item eq "");
my $abs = path( $vars{"grandfather"}, $item );
say "abs is <$abs>";
if ( -d $abs ) {
say "$abs is a directory";
}
if ( -f $abs ) {
say "$item is a plain file";
#syntax is from -> to
my $return = path($abs)->copy( $grand_dir, $item );
if ( $item =~ m/\.(pl|sh)$/ ) {
$return->chmod(0755);
}
say "return is $return";
}
}
my $b = $tempdir;
return $b;
}
1;
$
####
$ ./4.archive.pl
path1 is /home/bob/1.scripts/pages/1.qy
base is 1.qy
$VAR1 = {
'init_dir' => bless( [
'/home/bob/1.scripts/pages/1.qy',
'/home/bob/1.scripts/pages/1.qy',
'',
'/home/bob/1.scripts/pages/',
'1.qy'
], 'Path::Tiny' ),
'title' => '1.qy',
'script_file' => '/home/bob/1.scripts/pages/1.qy/4.archive.pl'
};
from is /home/bob/1.scripts/pages/1.manifest
$VAR1 = {
'init_dir' => bless( [
'/home/bob/1.scripts/pages/1.qy',
'/home/bob/1.scripts/pages/1.qy',
'',
'/home/bob/1.scripts/pages/',
'1.qy'
], 'Path::Tiny' ),
'title' => '1.qy',
'script_file' => '/home/bob/1.scripts/pages/1.qy/4.archive.pl'
};
files are 2.create.bash ... 5.unicode 3.create.bash
temp dir is /tmp/backup_MKb3nU
read me is /tmp/backup_MKb3nU/grandmother/README.txt
item is <<2.create.bash>>
abs is
2.create.bash is a plain file
return is /tmp/backup_MKb3nU/grandmother/2.create.bash
...
item is <<5.unicode>>
abs is
/home/bob/1.scripts/pages/5.unicode is a directory
item is <<>>
item is <<3.create.bash>>
abs is
3.create.bash is a plain file
return is /tmp/backup_MKb3nU/grandmother/3.create.bash
/tmp/backup_MKb3nU
.
./grandmother
./grandmother/1.initialize.pl
./grandmother/3.create.bash
./grandmother/5.create.sh
./grandmother/1.manifest
./grandmother/2.create.bash
./grandmother/README.txt
./grandmother/11.clone.pl
cannot remove path when cwd is /tmp/backup_MKb3nU for /tmp/backup_MKb3nU: at /usr/share/perl/5.26/File/Temp.pm line 1583.
$