taskswitcher/testapplications/generator/generator/generate.pl
author Jaakko Haukipuro (Nokia-MS/Oulu) <Jaakko.Haukipuro@nokia.com>
Thu, 16 Sep 2010 12:11:40 +0100
changeset 117 c63ee96dbe5f
permissions -rw-r--r--
Missing activityfw and taskswitcher components - fix for Bug 3670

use strict;
use File::Find;

my $appnum = shift;
my $baseuid = 0xA000018A;
my $baseuidstr = uid( 1 );
my $base = `cd`;
$base =~s/(\s+)$//; #remove linefeed from end
my $patternbase = $base."\\pattern";
my $globaliter = 0;

generate();

sub generate()
    {
    my $i = 0;
    for ( $i=1; $i<=$appnum; $i++ ) 
        {
        $globaliter = $i;
        createappdir($globaliter);
        find( \&reader, $patternbase );        
        }    
    createpkg();
    creategroup();
    system "perl devide_sis.pl $appnum";
    }

sub uid
    {
    my $iter = shift;
    my $uuid = $baseuid + $iter -1;
    my $hu = sprintf '%#X',  $uuid;
    $hu =~s/X/x/;
    return $hu;
    }

sub reader()     
    {
    my $file=$_;
	my $winpath=$File::Find::name;
	$winpath=~s/\//\\/g;	
	my $nefilepath = "";
	if ( -f $file && not($winpath =~/svn/) )
        {
        $nefilepath = newpath( $winpath, $globaliter );
        my $appuid = uid( $globaliter );
        rewritefile( $winpath, $nefilepath, $globaliter, $appuid );
        }
    }
    
sub newpath()
{
    my $patternpath = shift;
    my $iter = shift;
    my $appdir = "helloworldbasic".$iter;
    my $appbasicfilepath = "basic".$iter;
    my $appBasicfilepath = "Basic".$iter;
    $patternpath =~ s/basic1/$appbasicfilepath/;    
    $patternpath =~ s/Basic1/$appBasicfilepath/;    
    $patternpath =~ s/pattern/$appdir/;
    return $patternpath; 
}    

sub createappdir()
{
   my $iter = shift;
   my $appdir = "helloworldbasic".$iter;
   my $src = $appdir."\\src";
   my $inc = $appdir."\\inc";
   my $data = $appdir."\\data";
   my $sis = $appdir."\\sis";
   my $group = $appdir."\\group";
   system "mkdir $appdir";
   system "mkdir $src";
   system "mkdir $inc";
   system "mkdir $data";   
   system "mkdir $sis";  
   system "mkdir $group";  
}

sub rewritefile()
{
    my $input = shift;
    my $output = shift;
    my $iter = shift;
    my $uid = shift;
    my $basic = "basic".$iter;
    my $Basic = "Basic".$iter;
    my $World = "World".$iter;
    
    open FRI, $input or die "Couldn't open $input to read";
    binmode FRI;
    open FWO, ">$output" or die "Couldn't open $output to write";
    binmode FWO;
    while( <FRI> )
        {
        my $line = $_;
        $line =~ s/basic1/$basic/g;
        $line =~ s/Basic1/$Basic/g;
        $line =~ s/World1/$World/g;
        $line =~ s/$baseuidstr/$uid/gi;
        print FWO $line;
        }
    close FRI;
    close FWO;
}

sub createpkg()
{
    system "mkdir sis";
    open FRS, ".\\pattern\\sis\\helloworldbasic_armv5.pkg" or die "Couldn't open pkg file to read";
    binmode FRS;
    open FWS, ">sis\\helloworldbasic_armv5.pkg" or die "Couldn't open pkg file to write";
    binmode FWS;
    my @exports;
    my $begin = 0;
        
    while ( <FRS> )
        {
        my $line = $_;
        print FWS $line;
        if ($line =~ /;Files/)
            {
            $begin = 1;
            }
        if ($begin == 1)
            {
            push(@exports, $line);
            }    
        }        
    close FRS;
    
    for (my $i=2; $i<=$globaliter; $i++)
        {
        my $basic = "basic".$i;
        my $Basic = "Basic".$i;
        my $it = 0;
        while (defined($exports[$it]))
            {     
            my $line = $exports[$it];       
            $line =~ s/basic1/$basic/g;
            $line =~ s/Basic1/$Basic/g;
            print FWS $line;
            $it++;
            } 
        print FWS "\r\n\r\n";    
        }
    close FWS;
}   

sub creategroup()
    {
    system "mkdir group";
    open FWG, ">group\\bld.inf" or die "Couldn't open bld.inf file to write";
    binmode FWG;
    for (my $i=1; $i<=$globaliter; $i++)
        {
        my $path = "../helloworldbasic".$i."/group/bld.inf";
        print FWG "\#include \"$path\"\r\n";
        }
    }
    close FWG;