Meta

 view release on metacpan or  search on metacpan

Meta/Baseline/Cook.pm  view on Meta::CPAN

	my($opts)=$self->{OPTS};
	my($size)=$opts->size();
	for(my($i)=0;$i<$size;$i++) {
		my($key)=$opts->key($i);
		my($val)=$opts->val($i);
		push(@args,$key."=".$val);
	}

	my($base_cook_list)=$opts->get("base_cook_list");
	if($base_cook_list) {
		push(@args,"-List",$base_list);
	} else {
		push(@args,"-No_List");
	}

	my($base_cook_webx)=$opts->get("base_cook_webx");
	if($base_cook_webx) {
		push(@args,"-Web");
	} else {
		#there is no such flag (-No_Web)
		#it's enough that we don't put "-Web"
		#push(@args,"-No_Web");
	}

	push(@args,@$arra);
	if($verb) {
		Meta::Utils::Output::print("activating cook with [".join(',',@args)."]\n");
	}
	my($scod);
	if(!$demo) {
		$scod=Meta::Utils::System::system_nodie("cook",\@args);
	} else {
		$scod=1;
	}
	return($scod);
}

sub exec_build($$$) {
	my($self,$demo,$verb)=@_;
	my(@arra);
	my($scod)=$self->exec_development_build($demo,$verb,\@arra);
	if($scod) {
		if(!$demo) {
			my($dire)=Meta::Baseline::Aegis::integration_directory();
			$scod=Meta::Utils::File::Purge::purge($dire,0,0,undef);
		}
	}
	return($scod);
}

sub print_deps_handle($$) {
	my($deps,$file)=@_;
	#put a nice emblem to begin the file
	Meta::Baseline::Utils::cook_emblem_print($file);
	# iterate over the nodes
	for(my($i)=0;$i<$deps->node_size();$i++) {
		my($node)=$deps->nodes()->elem($i);
		my($out_edges)=$deps->edge_ou($node);
		# only if there are dependencies
		if($out_edges->size()>0) {
			print $file "cascade ".$node."=\n";
			for(my($j)=0;$j<$out_edges->size();$j++) {
				my($edge)=$out_edges->elem($j);
				print $file $edge."\n";
			}
			print $file ";\n";
		}
	}
	return(1);
}

sub print_deps($$) {
	my($deps,$targ)=@_;
	open(FILE,"> ".$targ) || throw Meta::Error::Simple("unable to open file [".$targ."]");
	&print_deps_handle($deps,*FILE);
	close(FILE) || throw Meta::Error::Simple("unable to close file [".$targ."]");
	return(1);
}

sub read_deps($$$) {
	my($deps,$file,$recu)=@_;
	#Meta::Utils::Output::print("file is [".$file."]\n");
	my($f_name,$f_path,$f_suff)=File::Basename::fileparse($file,'\..*');
	my($exte)="deps/".$f_path.$f_name.".deps";
	#Meta::Utils::Output::print("trying [".$exte."]\n");
	my($full)=Meta::Baseline::Aegis::which_nodie($exte);
	if(defined($full)) {
		my(@list);
		my($io)=Meta::IO::File->new_reader($full);
		# read the first comment line.
		my($line)=$io->cgetline();
		# if we have dep information
		if(!$io->eof()) {
			# read the cascade line
			$line=$io->cgetline();
			my($new)=($line=~/^cascade (.*)=$/);
			#Meta::Utils::Output::print("inserting node [".$new."]\n");
			$deps->node_insert($new);
			while(!$io->eof()) {
				if($line ne ";") {
					if(!$deps->node_has($line)) {
						push(@list,$line);
					}
					$deps->node_insert($line);
					#Meta::Utils::Output::print("inserting node [".$line."]\n");
					$deps->edge_insert($new,$line);
					#Meta::Utils::Output::print("inserting edge [".$new.",".$line."]\n");
				}
			}
		}
		$io->close();
		if($recu) {
			for(my($i)=0;$i<=$#list;$i++) {
				read_deps($deps,$list[$i],$recu);
			}
		}
	} else {
		$deps->node_insert($file);
	}
}

sub read_deps_full($) {
	my($file)=@_;
	my($graph)=Meta::Development::Deps->new();
	read_deps($graph,$file,1);
	return($graph);
}

sub read_deps_set($) {
	my($set)=@_;
	my($graph)=Meta::Development::Deps->new();
	for(my($i)=0;$i<$set->size();$i++) {
		my($curr)=$set->elem($i);
		read_deps($graph,$curr,1);
	}
	return($graph);
}

sub TEST($) {
	my($context)=@_;
	my($cook)=Meta::Baseline::Cook->new();
	my($search_list)=$cook->search_list();
	Meta::Utils::Output::print("search_list is [".$search_list."]\n");
	my($inte)=$cook->inte();
	Meta::Utils::Output::print("inte is [".$inte."]\n");
	my($deve)=$cook->deve();
	Meta::Utils::Output::print("deve is [".$deve."]\n");
	my($temp_dir)=$cook->temp_dir();
	Meta::Utils::Output::print("temp_dir is [".$temp_dir."]\n");

	my($graph)=Meta::Baseline::Cook::read_deps_full("deps/html/projects/Website/computing.deps");
	Meta::Utils::Output::print("number of nodes is [".$graph->node_size()."]\n");
	return(1);
}

1;



( run in 0.500 second using v1.01-cache-2.11-cpan-df04353d9ac )