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 )