Meta

 view release on metacpan or  search on metacpan

Meta/Baseline/Lang/Java.pm  view on Meta::CPAN


package Meta::Baseline::Lang::Java;

use strict qw(vars refs subs);
use Meta::Utils::File::Path qw();
use Meta::Baseline::Aegis qw();
use Meta::Baseline::Utils qw();
use Meta::Utils::File::Mkdir qw();
use Meta::Utils::File::Move qw();
use Meta::Baseline::Lang qw();
use Meta::Utils::Output qw();
use Meta::Utils::Env qw();

our($VERSION,@ISA);
$VERSION="0.40";
@ISA=qw(Meta::Baseline::Lang);

#sub get_jars();
#sub env();
#sub c2deps($);
#sub c2clas($);
#sub c2html($);
#sub c2chec($);
#sub class2file($);
#sub my_file($$);
#sub TEST($);

#__DATA__

sub get_jars() {
	my($jar0)=Meta::Baseline::Aegis::which("java/jars/classes12.jar");
	my($jar1)=Meta::Baseline::Aegis::which("java/jars/jaxp.jar");
	my($jar2)=Meta::Baseline::Aegis::which("java/jars/parser.jar");
	my($jar3)=Meta::Baseline::Aegis::which("java/jars/servlet.jar");
	return(join(':',$jar0,$jar1,$jar2,$jar3));
}

sub env() {
	my(%hash);
	my($class)="";
	my($sear)=Meta::Baseline::Aegis::search_path_list();
	for(my($i)=0;$i<=$#$sear;$i++) {
		my($curr)=$sear->[$i];
		$class=Meta::Utils::File::Path::add_path($class,
			$curr."/java/lib",":");
		$class=Meta::Utils::File::Path::add_path($class,
			$curr."/java/import/lib",":");
	}
	$hash{"CLASSPATH"}=$class;
	return(\%hash);
}

sub c2deps($) {
	my($buil)=@_;
	my($srcx)=$buil->get_srcx();
	my($modu)=$buil->get_modu();
	my($targ)=$buil->get_targ();
	my($path)=$buil->get_path();
	open(FILE,"> ".$targ) || throw Meta::Error::Simple("unable to open file [".$targ."]");
	Meta::Baseline::Utils::cook_emblem_print(*FILE);
	print FILE "cascade ".$srcx."=\n";
	my($obje)=Meta::Utils::Parse::Text->new();
	$obje->init_file($srcx);
	while(!$obje->get_over()) {
		my($line)=$obje->get_line();
		if($line=~/^import meta\..*;$/) {
#			Meta::Utils::Output::print("line is [".$line."]\n");
			my($class)=($line=~/^import (.*);$/);
			my($file)=class2file($class);
			print FILE $file."\n";
		}
		$obje->next();
	}
	$obje->fini();
	print FILE ";\n";
	close(FILE) || throw Meta::Error::Simple("unable to close file [".$targ."]");
	return(1);
}

sub c2clas($) {
	my($buil)=@_;
	my($srcx)=$buil->get_srcx();
	my($modu)=$buil->get_modu();
	my($targ)=$buil->get_targ();
	my($path)=$buil->get_path();
	my($jarx)=get_jars();
	my(@lptc)=split(":",$path);
	my(@lpts)=split(":",$path);
	for(my($i)=0;$i<=$#lptc;$i++) {
		$lptc[$i].="/clas/java/lib";
		$lpts[$i].="/java/lib";
#		Meta::Utils::File::Mkdir::mkdir_check($lptc[$i]);
	}
	my($pthc)=join(":",$jarx,@lptc);
	my($pths)=join(":",$jarx,@lpts);
	my($prog)="/local/tools/j2sdk1.4.1_01/bin/javac";
	my(@args);
	push(@args,"-O");
	# Add this if you want errors about deprecated features.
	# push(@args,"-deprecation");
	push(@args,"-nowarn");
	push(@args,"-classpath");
	push(@args,$pthc);
	push(@args,"-sourcepath");
	push(@args,$pths);
	push(@args,"-d");
	push(@args,"clas/java/lib");
	push(@args,$srcx);
	if(0) {
		for(my($i)=0;$i<=$#args;$i++) {
			Meta::Utils::Output::print("arg [".$i."] is [".$args[$i]."]\n");
		}
	}
	my($scod)=Meta::Utils::System::system_nodie($prog,\@args);
#	if($scod) {
#		my($name,$path,$suff)=File::Basename::fileparse($srcx,"\.java");
#		my($crea)=$path.$name.".class";
#		Meta::Utils::File::Move::mv($crea,$targ);
#	}
	return($scod);
#	open(FILE,"> ".$targ) || throw Meta::Error::Simple("unable to open file [".$targ."]");



( run in 0.600 second using v1.01-cache-2.11-cpan-39bf76dae61 )