#!/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 $Mode       = "CIF";
my $QueueDir   = Deps::MakePath("$ENV{HOME}/data-vasp/atom", "queue2", 0);
my $ScriptName = "DoVASP.sh";
my $ScriptTemplateName = "DoVASP-atom.sh";

my $cwd = cwd();

while(1) {
	if(chdir($cwd)) {
#		system("ls");
	}
	else {
		print("chdir [$cwd] failed.\n");
	}
	
	my @files;
	if($Mode eq 'CIF') {
		@files = sort { Utils::GetWriteDate($a) <=> Utils::GetWriteDate($b); } glob(Deps::MakePath($QueueDir, "*.cif", 0));
	}
	else {
		@files = sort { Utils::GetWriteDate($a) <=> Utils::GetWriteDate($b); } glob(Deps::MakePath($QueueDir, "*", 0));
	}
	if(@files == 0) {
		print("No active directory found.\n");
		sleep(2);
		next;
	}

	my ($SourceDir, $DirName);
	for(my $i = 0 ; $i < @files ; $i++) {
		if($Mode eq 'CIF') {
			next if(!-f $files[$i]);
		}
		else {
			next if(!-d $files[$i]);
			next if(!-f Deps::MakePath($files[$i], $ScriptName));
		}

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

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

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

	my $cmd;
	if($Mode eq 'CIF') {
		$cmd = "mkdir $DirName; cp $SourceDir $DirName; cp $ScriptTemplateName $DirName/$ScriptName";
	}
	else {
		$cmd = "cp -r $SourceDir $DirName";
	}
	my $ret;
	if($ret = system($cmd)) {
		print("Execute [$cmd] failed [$ret].\n");
		sleep(2);
		next;
#		exit;
	}
	else {
		print("Executed: [$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;
	
