sbsv1/abld/kif/perl/genkif.pl
changeset 599 fa7a3cc6effd
equal deleted inserted replaced
596:9f25be3da657 599:fa7a3cc6effd
       
     1 # Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 # All rights reserved.
       
     3 # This component and the accompanying materials are made available
       
     4 # under the terms of "Eclipse Public License v1.0"
       
     5 # which accompanies this distribution, and is available
       
     6 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 #
       
     8 # Initial Contributors:
       
     9 # Nokia Corporation - initial contribution.
       
    10 #
       
    11 # Contributors:
       
    12 #
       
    13 # Description:
       
    14 #
       
    15 
       
    16 use XML::Simple;
       
    17 use File::Path;
       
    18 use File::Copy;
       
    19 use Win32::File;
       
    20 use Getopt::Long;
       
    21 use strict;
       
    22 
       
    23 my $outfile;
       
    24 my $verbose;
       
    25 GetOptions("o=s", \$outfile, "v+", \$verbose);
       
    26 
       
    27 if (!defined $outfile) {
       
    28 	die "ERROR: Syntax: genkif.pl -o <kif filename>\n";
       
    29 } elsif (-f $outfile) {
       
    30 	print STDOUT "REMARK: KIF generation skipped due to it already existing (in '$outfile').\n";
       
    31 	exit 0;
       
    32 } elsif (-e $outfile) {
       
    33 	die "ERROR: KIF output file '$outfile' must not be a directory or other non-file type\n";
       
    34 } elsif ($verbose) {
       
    35 	print "Got output file of '$outfile'\n";
       
    36 }
       
    37 
       
    38 my $buildnum = $ENV{'BuildNumber'};
       
    39 if (!defined $buildnum) {
       
    40 	die "ERROR: KIF generation skipped due to the BuildNumber environment variable not being set.\n";
       
    41 } elsif ($verbose) {
       
    42 	print "Got build number of '$buildnum'\n";
       
    43 }
       
    44 
       
    45 my $namespace = "ki";
       
    46 my $nsuri = "http://www.symbian.com/kif1";
       
    47 my $schema = "kif1.xsd";
       
    48 
       
    49 my $build;
       
    50 my $version;
       
    51 if ($buildnum =~ /^(.*)_Symbian_OS_v(.*)$/) {
       
    52 	$build = $1;
       
    53 	$version = $2;
       
    54 	print "Parsed build number as $build, os version $version\n" if $verbose;
       
    55 } else {
       
    56 	die "ERROR: Build number '$buildnum' is not a valid build number\n";
       
    57 }
       
    58 
       
    59 # Generate the Kit Information File
       
    60 
       
    61 print "Constructing the KIF data\n" if $verbose;
       
    62 
       
    63 my $mapper = new XML::Simple('rootname' => $namespace.':kitinfo', 'searchpath' => '.');
       
    64 
       
    65 my $hash = {
       
    66 	'xsi:schemaLocation' => "$nsuri $schema",
       
    67 	"xmlns:".$namespace => $nsuri,
       
    68 	'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
       
    69 	'label' => $buildnum,
       
    70 	$namespace.':release' => {
       
    71 		'build' => $build,
       
    72 		'version' => $version
       
    73 	}
       
    74 };
       
    75 
       
    76 print "Writing the KIF data to '$outfile'\n" if $verbose;
       
    77 
       
    78 open(my $out, ">$outfile") or die "ERROR: Couldn't open $outfile for writing: $!\n";
       
    79 
       
    80 print $out $mapper->XMLout($hash, 'xmldecl' => "<?xml version='1.0'?>");
       
    81 
       
    82 close($out) or die "ERROR: Couldn't write to $outfile".": $!\n";
       
    83 
       
    84 print "Generated KIF in $outfile\n";