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;