App-SeismicUnixGui

 view release on metacpan or  search on metacpan

lib/App/SeismicUnixGui/big_streams/BackupProject.pl  view on Meta::CPAN



=head2 NOTES 

 We are using Moose.
 Moose already declares that you need debuggers turned on
 so you don't need a line like the following:
 use warnings;


=cut

use Moose;
our $VERSION = '0.1.0';

use aliased 'App::SeismicUnixGui::misc::L_SU_local_user_constants';
use aliased 'App::SeismicUnixGui::configs::big_streams::BackupProject_config';
use aliased 'App::SeismicUnixGui::misc::control';
use File::Copy;
use Cwd;

=head2 Instantiate classes:

 Create a new versions of the packages 

=cut

my $BackupProject_config      = BackupProject_config->new();
my $L_SU_local_user_constants = L_SU_local_user_constants->new();
my $control                   = control->new();

=head2

  Internal definitions
  
=cut

my $success_counter = 0;
my $CWD             = getcwd();

=head2 Get configuration information

Assume Project is at least soft-linked
from the home dirctory

=cut

my ( $CFG_h, $CFG_aref ) = $BackupProject_config->get_values();
my $project_directory    = $CFG_h->{BackupProject}{1}{directory_name};
$control->set_infection( $project_directory );
$project_directory       = $control->get_ticksBgone();

print("BackupProject.pl, project_directory = $project_directory \n");

my $HOME           = $L_SU_local_user_constants->get_home();
my $tar_input      = $HOME . '/'. $project_directory;

=head2 Verify project is a true SUG project

collect project names
compare backup project against project names

=cut

my @PROJECT_HOME_aref = $L_SU_local_user_constants->get_PROJECT_HOMES_aref();
my @project_name_aref = $L_SU_local_user_constants->get_project_names();
my $CONFIGURATION     = $L_SU_local_user_constants->get_CONFIGURATION();

my @project_pathNname = @{ $PROJECT_HOME_aref[0] };
my @project_name      = @{ $project_name_aref[0] };

my $length             = scalar @project_pathNname;

print("BackupProject.pl,project_pathNnames are=@project_pathNname\n");
#print("BackupProject.pl,CONFIGURATION= $CONFIGURATION\n");
#print("BackupProject.pl,project names=@project_name\n");
#print("Backup_PROJECT_PROJECTProject.pl,There are $length existant projects in /.L_SU/configuration\n");

=pod
 
 check to see that the project directory 
 that is to be backed up exists.
 
=cut

 $L_SU_local_user_constants->set_PROJECT_name($project_directory);
 my $project_exists = $L_SU_local_user_constants->get_PROJECT_exists();
 print("BackupProject.pl,Does project $project_directory exist? ans=$project_exists\n");

=pod
 
 check to see that the project directory contains Project.config
 If Project.config exists then
 copy this file with the Project during the backup
 
=cut

if ( $project_exists ) {

	my $Project_configuration_exists = $L_SU_local_user_constants->user_configuration_Project_config_exists();
    print("BackupProject.pl, Project_configuration_exists=$Project_configuration_exists \n");

	if ($Project_configuration_exists) {

		print("Found a real SeismicUnixGui project!\n");
		my $from = $CONFIGURATION.'/'.$project_directory.'/'.'Project.config';
		my $to   = $tar_input;
		
		copy( $from, $to );
		
        print("BackupProject.pl, copying $from to $to \n");
	}
	else {
		print("BackupProject.pl,unsuccessful\n");
		print("Not a real SeismicUnixGui project!\n");
	}

} else {
	print("BackupProject.pl, Project for backing up does not exist \n");
}

=head2 Tarring a project

remove the local path

=cut

my $ORIGDIR          = '.';
my $tar_options      = "-hczvf ";
my $project2tar      = './'.$project_directory;

my $perl_instruction = ("cd $HOME; tar $tar_options $project_directory.tz $project2tar");

print("$perl_instruction\n");
print("Generic \"Project.tz\" file is assumed to live in user\'s home directory\n");
print("Tarring will follow any symbolic links to their origin\n");

system($perl_instruction);



( run in 3.378 seconds using v1.01-cache-2.11-cpan-140bd7fdf52 )