locfiles/group/switch_loc_generator.pl
changeset 24 96f7513ad2d7
parent 0 6d65d5acee06
child 25 eae91afea9e5
child 36 fc38b048ab2f
--- a/locfiles/group/switch_loc_generator.pl	Tue Feb 02 01:12:20 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,294 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
-# ============================================================================
-#  Name     : loc_generator.pl
-#  Part of  : create loc files to \epoc32\s60\locfiles base on subfolders in the same folder
-#  Origin   : S60 build team,NMP
-#  Created  : Tue Sep 24 11:32:47 2006
-#  Version  : 0.2
-#  Description:
-#	 Version 0.2 changes(VL): added "dirty hack" so that new string is added for all layers, 
-#	 this need to be removed when S60locfiles is exporting localized .loc files to correct layers !!!
-#  Also added fix to sub routine update_locs [if ($key eq "") {next}; # skip empty ones]
-
-
-use strict;
-use File::Basename; # for fileparse
-use Getopt::Long;
-use Data::Dumper;		# debugging purposes
-
-#
-# Variables...
-#
-my $version = "0.2";
-my $locfile_path;
-my $loc_sc_folder = "sc";
-my $loc_01_folder = "01";
-my @generated_files;
-
-my $input;
-my $dozip;
-my $noupdatelocfiles;
-my $force_generation;
-my $show_help;
-
-my $result = GetOptions('i:s' => \$input, 'zip:s' => \$dozip, 'noUpdate' => \$noupdatelocfiles, 'force' => \$force_generation , 'h' => \$show_help);	
-
-if ($show_help) {help(); die "";};
-
-if ($input && (!-d $input)){&error_msg("Invalid parameter '$input'!");}
-if ($input  && $input !~ m/\\$/) {$input .= "\\";};
-
-if (!$result){&error_msg("Required Arguments are missing or wrong");}
-#
-# Hello text
-#
-hello();
-
-# paths to exported loc files
-my @exportedlocfilepaths = ("\\epoc32\\include\\platform\\loc", "\\epoc32\\include\\platform\\mw\\loc", "\\epoc32\\include\\platform\\app\\loc");
-
-if ($input) {
-	generate_locs($input);
-	if ($dozip) {zipup_genfiles($input)};
-}
-foreach $locfile_path (@exportedlocfilepaths) {
-	generate_locs($locfile_path);
-}
-
-sub zipup_genfiles {
-	my $folder = shift;
-	unlink($dozip);
-	print "zip.exe -j -m $dozip @{generated_files}\n";
-	system ("zip.exe -j -m $dozip @generated_files");
-}
-
-# generate switch loc files
-sub generate_locs {
-	my $folder = shift;
-	my @files;
-	my @languageids;
-	@generated_files=();
-	
-# get language ids from folder names
-# use sc as reference
-	if (-d ${folder}.${loc_sc_folder}) {
-    opendir(SDIR, ${folder}.${loc_sc_folder}) or &error_msg("can not read ${folder}${loc_sc_folder}\n");
-	  @files = grep !/^\.\.?$/ && /.loc$/i, readdir SDIR;
-	  closedir(SDIR);
-
-	  opendir(SDIR, $folder) or &error_msg("can not read $folder\n");
-	  @languageids = grep !/^\.\.?$/ && /^\d+?$/i, readdir SDIR;
-	  closedir(SDIR);
-	}
-# get language ids from zip file names. 
-# use 01 as reference
-	elsif (-f "${folder}${loc_01_folder}.zip") {
-		open ZIP, "unzip -Z1 ${folder}${loc_01_folder}.zip |";
-		while (<ZIP>)
-		{
-			chomp;
-			$_ =~ s/.*\///i;
-			$_ =~ s/_${loc_01_folder}//i;
-		
-			push @files ,$_; 
-		}
-		close ZIP;
-		
-	  opendir(SDIR, $folder) or &error_msg("can not read $folder\n");
-	  my @zipfiles = grep !/^\.\.?$/ && /^\d+?.zip$/i, readdir SDIR;
-	  closedir(SDIR);
-	  foreach (@zipfiles) {
-	  	$_ =~ s/.zip//i;
-	  	push @languageids, $_;
-	  }
-	}
-
-#	print Dumper( @languageids );
-
-	foreach my $loc_file (@files) {
-		$loc_file =~ s/_${loc_01_folder}//i;
-		if (!-e $folder.$loc_file || $force_generation) {
-			push @generated_files, $folder.$loc_file."\n";
-			create_include_loc($folder, $loc_file, \@languageids);
-		}
-		if (!$noupdatelocfiles) {
-			update_locs($folder, $loc_file, \@languageids);
-		}
-	}
-}
-
-# update exist localized loc files base on exported original loc.
-# create new files for all languages in case if loc is new one
-# update new defines from component exported loc to exist localized files
-sub update_locs {
-	my $loc_path = shift;
-	my $loc_file = shift;
-	my $languageids = shift;
-	my ($n, $ext) = split ('\.', $loc_file);
-
-	if (!-f "${loc_path}${loc_sc_folder}\\${loc_file}"){return;};
-
-	my %defines_orig = read_loc("${loc_path}${loc_sc_folder}\\${loc_file}");
-
-	foreach my $languageID (@$languageids) {
-		my @add;
-		
-		if (!-e "${loc_path}${languageID}\\${n}_${languageID}\.${ext}") {
-			foreach my $key (keys %defines_orig) {
-				push @add, $defines_orig{$key}."\n";
-			}
-		}
-		else {
-			my %defines = read_loc("${loc_path}${languageID}\\${n}_${languageID}\.${ext}");
-			foreach my $key (keys %defines_orig) {
-				if ($key eq "") {next}; # skip empty ones
-				if (!exists $defines{$key}) {
-					push @add, $defines_orig{$key}."\n";
-				}
-			}
-			
-		}		
-		next if (!scalar @add);
-		# Dirty quick hack to go trough all paths in this phase also 
-		foreach my $locfile_path_temp (@exportedlocfilepaths) {
-			if (!-f "${locfile_path_temp}${languageID}\\${n}_${languageID}\.${ext}"){next;};
-			print "update ${locfile_path_temp}${languageID}\\${n}_${languageID}\.${ext} \n add lines\n @{add} \n";
-			open (OUT_LOC,">>${locfile_path_temp}${languageID}\\${n}_${languageID}\.${ext}") or die "Cannot open ${locfile_path_temp}${languageID}\\${n}_${languageID}\.${ext} for reading: $!";
-			print OUT_LOC "\n";
-			print OUT_LOC @add;
-			close OUT_LOC;
-		}
-
-	}
-}
-
-# read .loc file and return defined strings
-sub read_loc {
-	my $read_loc = shift;
-	my %defines;
-		
-	open (IN,"$read_loc") or die "Cannot open ${read_loc} for reading: $!";
-	my @lines=<IN>;
-	close IN;
-	
-	my $open_comment = 0;
-	foreach (@lines) {
-		chomp;
-    if (m!^\s*/\*!) {
-	    $open_comment=1;
-	    if (m!\*/!) {
-	      $open_comment=0;
-	    }
-	    next;
-    }
-    if (m!\*/!) {
-      $open_comment=0;
-      next;
-    }
-    next if ($open_comment);
-    next if (!m/^\s*?\#define/i);
-		my $line = $_;
-
-		$line =~ s/\"+/\"\#/;
-    $_ =~ s/\s*?\#define\s+?//i;
-    $_ =~ s/\s.*//i;
-    
-    $defines{$_}=$line;
-	}
-	
-		return %defines;
-}
-
-
-# create switch loc file
-sub create_include_loc {
-	my $loc_path = shift;
-	my $loc_file = shift;
-	my $languageids = shift;
-
-	my ($n, $ext) = split ('\.', $loc_file);
-	print "create file ${loc_path}${loc_file}\n";
-	open (OUT,">${loc_path}${loc_file}") or die "Cannot open ${loc_path}${loc_file} for writing: $!";
-
-#	my $first = 1;
-	print OUT "\#if LANGUAGE_${loc_sc_folder}\n";
-	print OUT "\t\#include <${loc_sc_folder}\/${loc_file}\>\n";
-
-	foreach my $languageID (@$languageids) {
-#		next if (!-f "${locfile_path}\\${languageID}\\${n}_${languageID}${ext}");
-#		if ($first) {
-#			print OUT "\#if LANGUAGE_${languageID}\n";
-#			$first = 0;
-#		}
-#		else {
-			print OUT "\#elif LANGUAGE_${languageID}\n";
-#		}
-		print OUT "\t\#include <${languageID}\/${n}_${languageID}\.${ext}\>\n";
-	}
-	
-#	print OUT "\#else\n";
-#	print OUT "\t\#include <${loc_sc_folder}\\${loc_file}\>\n";
-	print OUT "\#endif\n";
-
-
-	close OUT;
-}
-
-sub datetime {
-  my ($sec,$min,$hour,$day,$month,$year,$wbday,$yday,$isdst)=gmtime();
-  $month++;
-  $year+=1900;
-  
-  return (sprintf("%04d.%02d.%02d %02d:%02d:%02d",$year,$month,$day,$hour,$min,$sec));
-}
-
-sub hello {
-  print "This is switch_loc_generator version ${version}\n";
-  print "\n";
-}
-
-sub error_msg ($){
-  my($ErrorMsg);
-  ($ErrorMsg)=@_;
-  my $given_command=$0;
-  $given_command =~ s/.*\\(\w+\.\w+)$/$1/;
-  print "";
-  print "\n";
-  print "Error: $ErrorMsg \n\n";
-  help();
-  die "\n";    
-}
-
-sub help {
-  my $given_command=$0;
-  $given_command =~ s/.*\\(\w+\.\w+)$/$1/;
-
-  print "";
-  print "\n";
-  hello();
-	print " Parameters:\n";
-	print " -i <path to localized loc zips> : custom path to generated switch loc files. Option for localisation team\n";
-	print " -zip <zip file name to zip up generated switch loc files> : path to zip up generated switch loc files. Option for localisation team\n";
-	print " -noUpdate : do not update localised loc files in epoc32 -folder\n";
-	print " -force : regenerate switch loc files even those are exists\n";
-	print " -h : print this info message\n";
-  print "Usage: \n$given_command -i <localised loc file folder>\n";
-  print "Example:  \n$given_command -i \\s60\\misc\\release\\S60LocFiles\\data\n\n";
-  print "Example for localization team:  \n$given_command -i ..\\data -zip ..\\data\\switch_loc.zip\n";
-  print "\n";  
-	
-}
\ No newline at end of file