#!/usr/bin/perl

BEGIN {
#use lib 'd:/Programs/Perl/lib';
#use lib '/home/tkamiya/bin/lib';
my $BaseDir = $ENV{'TkPerlDir'};
#print "\nBaseDir: $BaseDir\n";
@INC = ("$BaseDir/lib", "$BaseDir/VNL", "d:/Programs/Perl/lib", @INC);
}

use strict;
use lib "d:/Programs/Perl/lib";
use Cwd;

use Utils;

my $QueueDir   = Deps::MakePath($ENV{HOME}, "queue", 0);
my $ScriptName = "DoVASP.sh";

my $cwd = cwd();

while(1) {
	if(chdir($cwd)) {
#		system("ls");
	}
	else {
		print("chdir [$cwd] failed.\n");
	}

	my @dirs = sort { Utils::GetWriteDate($a) <=> Utils::GetWriteDate($b); } glob(Deps::MakePath($QueueDir, "*", 0));
	exit if(@dirs == 0);

	my ($SourceDir, $DirName);
	for(my $i = 0 ; $i < @dirs ; $i++) {
		next if(!-d $dirs[$i]);
		next if(!-f Deps::MakePath($dirs[$i], $ScriptName));

		if($dirs[$i] =~ /\.moved$/) {
			print("Moved directory [$dirs[$i]] found: Skip.\n");
			next;
		}

		my ($drive, $directory, $filename, $ext, $lastdir, $filebody) = Deps::SplitFilePath($dirs[$i]);
#print("fn: $filename\n");
		if(-e $filename) {
			print("Directory [$filename] exists: Skip.\n");
			next;
		}

		my $t = Utils::GetWriteDate($dirs[$i]);
		print("$i: $dirs[$i] [", Utils::BuildDateString($t), "]\n");
		$SourceDir = $dirs[$i];
		$DirName = $filename;
		last;
	}
	if(!defined $SourceDir) {
		print("No active directory found.\n");
		sleep(2);
		next;
#		exit;
	}

	my $cmd = "cp -r $SourceDir $DirName";
	my $ret;
	if($ret = system($cmd)) {
		print("Execute [$cmd] failed [$ret].\n");
		sleep(2);
		next;
#		exit;
	}
	else {
		print("Execute [$cmd]\n");
	}

	if(chdir($DirName)) {
#		system("ls");
	}
	else {
		print("chdir [$DirName] failed.\n");
		sleep(2);
		next;
#		exit;
	}

	$cmd = "mv $SourceDir $SourceDir.moved";
	if($ret = system($cmd)) {
		print("Execute [$cmd] failed.\n");
		sleep(2);
		next;
#		exit;
	}

	print("\n\n");
	print("Execute [$ScriptName] in [$DirName]\n");
	if($ret = system($ScriptName)) {
		print("  Error: Execute [$ScriptName] failed [$ret] in [$DirName].\n");
		sleep(2);
		next;
#		exit;
	}
}

exit;
	
