[Libreoffice-commits] .: 2 commits - solenv/bin
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Sun Sep 30 08:54:01 PDT 2012
solenv/bin/modules/installer.pm | 72 -----------------------------
solenv/bin/modules/installer/profiles.pm | 45 +++++++-----------
solenv/bin/modules/installer/ziplist.pm | 73 ++++++++++++++++++++++++++++++
solenv/bin/modules/t/installer-profiles.t | 60 ++++++++++++++++++++++++
4 files changed, 154 insertions(+), 96 deletions(-)
New commits:
commit 5cc1d5ca954a594129bd81159a87f8dfb9bbffe7
Author: Tim Retout <tim at retout.co.uk>
Date: Sun Sep 30 13:23:43 2012 +0100
installer::profiles: Test and rewrite sorting_profile
Change-Id: Ie3c9bddcb4760d2fe2195c1ca0de7520e57d705f
diff --git a/solenv/bin/modules/installer/profiles.pm b/solenv/bin/modules/installer/profiles.pm
index 7b621f7..3b99973 100644
--- a/solenv/bin/modules/installer/profiles.pm
+++ b/solenv/bin/modules/installer/profiles.pm
@@ -42,40 +42,33 @@ use installer::systemactions;
# Sorting the content of a profile
#######################################################
-sub sorting_profile
-{
+sub sorting_profile {
my ($profilesref) = @_;
- my @profile = ();
- my @definedsections = ();
+ my @sections;
+ my %section_content;
- for ( my $i = 0; $i <= $#{$profilesref}; $i++ )
- {
+ for ( my $i = 0; $i < @{$profilesref}; $i++ ) {
my $line = ${$profilesref}[$i];
- if ( $line =~ /^\s*(\[.*\])\s*$/ ) # this is a section (every second line)
- {
- my $section = $1;
+ # Skip unless this is a section (every second line)
+ next unless ( $line =~ /^\s*(\[.*\])\s*$/ );
- if (! grep {$_ eq $section} @definedsections)
- {
- my $sectionline = $section . "\n";
- push(@definedsections, $section);
- push(@profile, $sectionline);
+ my $section = $1;
+ my $next_line = ${$profilesref}[$i+1];
- for ( my $j = 0; $j <= $#{$profilesref}; $j++ )
- {
- my $oneline = ${$profilesref}[$j];
- installer::remover::remove_leading_and_ending_whitespaces(\$oneline);
-
- if ( $oneline eq $section )
- {
- my $nextline = ${$profilesref}[$j+1];
- push(@profile, $nextline);
- }
- }
- }
+ if ( ! exists $section_content{$section} ) {
+ push @sections, $section;
}
+
+ push @{ $section_content{$section} }, $next_line;
+ }
+
+ my @profile;
+
+ for my $section (@sections) {
+ push @profile, "$section\n";
+ push @profile, @{ $section_content{$section} };
}
return \@profile;
diff --git a/solenv/bin/modules/t/installer-profiles.t b/solenv/bin/modules/t/installer-profiles.t
new file mode 100644
index 0000000..841af14
--- /dev/null
+++ b/solenv/bin/modules/t/installer-profiles.t
@@ -0,0 +1,60 @@
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Major Contributor(s):
+# [ Copyright (C) 2012 Tim Retout <tim at retout.co.uk> (initial developer) ]
+#
+# All Rights Reserved.
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use lib '.';
+
+use installer::profiles;
+
+my @input = map { "$_\n" } split "\n", <<'END';
+ [foo]
+1
+NOT SEEN
+ [bar]
+3
+ [foo]
+2
+[bar]
+4
+END
+
+my @expected = map { "$_\n" } split "\n", <<'END';
+[foo]
+1
+2
+[bar]
+3
+4
+END
+
+my $result = installer::profiles::sorting_profile(\@input);
+
+is_deeply($result, \@expected);
+
+done_testing();
commit 665785c073f695922603854a9d2d5ecab4061ff0
Author: Tim Retout <tim at retout.co.uk>
Date: Sun Sep 30 13:15:23 2012 +0100
installer: Create new read_ziplist function.
Change-Id: Ie91376bf9c52238febdc15720bb7f4cd62ee2e08
diff --git a/solenv/bin/modules/installer.pm b/solenv/bin/modules/installer.pm
index 54b64b0..4c50d3b 100644
--- a/solenv/bin/modules/installer.pm
+++ b/solenv/bin/modules/installer.pm
@@ -82,7 +82,7 @@ use installer::windows::strip;
use installer::windows::update;
use installer::windows::upgrade;
use installer::worker;
-use installer::ziplist;
+use installer::ziplist qw(read_ziplist);
our @EXPORT_OK = qw(main);
@@ -163,75 +163,7 @@ sub run {
# Analyzing the settings and variables in zip.lst
###################################################
- installer::logger::globallog("zip list file: $installer::globals::ziplistname");
-
- my $ziplistref = installer::files::read_file($installer::globals::ziplistname);
-
- installer::logger::print_message( "... analyzing $installer::globals::ziplistname ... \n" );
-
- my ($productblockref, $parent) = installer::ziplist::getproductblock($ziplistref, $installer::globals::product, 1); # product block from zip.lst
-
- my ($settingsblockref, undef) = installer::ziplist::getproductblock($productblockref, "Settings", 0); # settings block from zip.lst
-
- $settingsblockref = installer::ziplist::analyze_settings_block($settingsblockref); # select data from settings block in zip.lst
-
- my $allsettingsarrayref = installer::ziplist::get_settings_from_ziplist($settingsblockref);
-
- my $allvariablesarrayref = installer::ziplist::get_variables_from_ziplist($settingsblockref);
-
- my ($globalproductblockref, undef) = installer::ziplist::getproductblock($ziplistref, $installer::globals::globalblock, 0); # global product block from zip.lst
-
- while (defined $parent)
- {
- my $parentproductblockref;
- ($parentproductblockref, $parent) = installer::ziplist::getproductblock(
- $ziplistref, $parent, 1);
- my ($parentsettingsblockref, undef) = installer::ziplist::getproductblock(
- $parentproductblockref, "Settings", 0);
- $parentsettingsblockref = installer::ziplist::analyze_settings_block(
- $parentsettingsblockref);
- my $allparentsettingsarrayref =
- installer::ziplist::get_settings_from_ziplist($parentsettingsblockref);
- my $allparentvariablesarrayref =
- installer::ziplist::get_variables_from_ziplist($parentsettingsblockref);
- $allsettingsarrayref =
- installer::converter::combine_arrays_from_references_first_win(
- $allsettingsarrayref, $allparentsettingsarrayref)
- if $#{$allparentsettingsarrayref} > -1;
- $allvariablesarrayref =
- installer::converter::combine_arrays_from_references_first_win(
- $allvariablesarrayref, $allparentvariablesarrayref)
- if $#{$allparentvariablesarrayref} > -1;
- }
-
- if ( $#{$globalproductblockref} > -1 )
- {
- my ($globalsettingsblockref, undef) = installer::ziplist::getproductblock($globalproductblockref, "Settings", 0); # settings block from zip.lst
-
- $globalsettingsblockref = installer::ziplist::analyze_settings_block($globalsettingsblockref); # select data from settings block in zip.lst
-
- my $allglobalsettingsarrayref = installer::ziplist::get_settings_from_ziplist($globalsettingsblockref);
-
- my $allglobalvariablesarrayref = installer::ziplist::get_variables_from_ziplist($globalsettingsblockref);
-
- if ( $#{$allglobalsettingsarrayref} > -1 ) { $allsettingsarrayref = installer::converter::combine_arrays_from_references_first_win($allsettingsarrayref, $allglobalsettingsarrayref); }
- if ( $#{$allglobalvariablesarrayref} > -1 ) { $allvariablesarrayref = installer::converter::combine_arrays_from_references_first_win($allvariablesarrayref, $allglobalvariablesarrayref); }
- }
-
- $allsettingsarrayref = installer::ziplist::remove_multiples_from_ziplist($allsettingsarrayref); # the settings from the zip.lst
-
- $allvariablesarrayref = installer::ziplist::remove_multiples_from_ziplist($allvariablesarrayref);
-
- installer::ziplist::replace_variables_in_ziplist_variables($allvariablesarrayref);
-
- my $allvariableshashref = installer::converter::convert_array_to_hash($allvariablesarrayref); # the variables from the zip.lst
-
- installer::ziplist::set_default_productversion_if_required($allvariableshashref);
-
- installer::ziplist::add_variables_to_allvariableshashref($allvariableshashref);
-
- installer::ziplist::overwrite_branding( $allvariableshashref );
-
+ my ($allsettingsarrayref, $allvariableshashref) = read_ziplist($installer::globals::ziplistname);
########################################################
# Check if this is simple packaging mechanism
diff --git a/solenv/bin/modules/installer/ziplist.pm b/solenv/bin/modules/installer/ziplist.pm
index 95b5638..4a3e476 100644
--- a/solenv/bin/modules/installer/ziplist.pm
+++ b/solenv/bin/modules/installer/ziplist.pm
@@ -27,14 +27,87 @@
package installer::ziplist;
+use base 'Exporter';
+
use File::Spec::Functions qw(rel2abs);
+use installer::converter;
use installer::exiter;
+use installer::files;
use installer::globals;
use installer::logger;
use installer::remover;
use installer::systemactions;
+our @EXPORT_OK = qw(read_ziplist);
+
+sub read_ziplist {
+ my $ziplistname = shift;
+
+ installer::logger::globallog("zip list file: $ziplistname");
+
+ my $ziplistref = installer::files::read_file($ziplistname);
+
+ installer::logger::print_message( "... analyzing $ziplistname ... \n" );
+
+ my ($productblockref, $parent) = getproductblock($ziplistref, $installer::globals::product, 1); # product block from zip.lst
+
+ my ($settingsblockref, undef) = getproductblock($productblockref, "Settings", 0); # settings block from zip.lst
+ $settingsblockref = analyze_settings_block($settingsblockref); # select data from settings block in zip.lst
+
+ my $allsettingsarrayref = get_settings_from_ziplist($settingsblockref);
+ my $allvariablesarrayref = get_variables_from_ziplist($settingsblockref);
+
+ my ($globalproductblockref, undef) = getproductblock($ziplistref, $installer::globals::globalblock, 0); # global product block from zip.lst
+
+ while (defined $parent) {
+ my $parentproductblockref;
+ ($parentproductblockref, $parent) = getproductblock($ziplistref, $parent, 1);
+ my ($parentsettingsblockref, undef) = getproductblock($parentproductblockref, "Settings", 0);
+ $parentsettingsblockref = analyze_settings_block($parentsettingsblockref);
+ my $allparentsettingsarrayref = get_settings_from_ziplist($parentsettingsblockref);
+ my $allparentvariablesarrayref = get_variables_from_ziplist($parentsettingsblockref);
+ $allsettingsarrayref =
+ installer::converter::combine_arrays_from_references_first_win(
+ $allsettingsarrayref, $allparentsettingsarrayref)
+ if $#{$allparentsettingsarrayref} > -1;
+ $allvariablesarrayref =
+ installer::converter::combine_arrays_from_references_first_win(
+ $allvariablesarrayref, $allparentvariablesarrayref)
+ if $#{$allparentvariablesarrayref} > -1;
+ }
+
+ if ( @{$globalproductblockref} ) {
+ my ($globalsettingsblockref, undef) = getproductblock($globalproductblockref, "Settings", 0); # settings block from zip.lst
+
+ $globalsettingsblockref = analyze_settings_block($globalsettingsblockref); # select data from settings block in zip.lst
+
+ my $allglobalsettingsarrayref = get_settings_from_ziplist($globalsettingsblockref);
+
+ my $allglobalvariablesarrayref = get_variables_from_ziplist($globalsettingsblockref);
+
+ if ( @{$allglobalsettingsarrayref} ) {
+ $allsettingsarrayref = installer::converter::combine_arrays_from_references_first_win($allsettingsarrayref, $allglobalsettingsarrayref);
+ }
+ if ( @{$allglobalvariablesarrayref} ) {
+ $allvariablesarrayref = installer::converter::combine_arrays_from_references_first_win($allvariablesarrayref, $allglobalvariablesarrayref);
+ }
+ }
+
+ $allsettingsarrayref = remove_multiples_from_ziplist($allsettingsarrayref);
+ $allvariablesarrayref = remove_multiples_from_ziplist($allvariablesarrayref);
+
+ replace_variables_in_ziplist_variables($allvariablesarrayref);
+
+ my $allvariableshashref = installer::converter::convert_array_to_hash($allvariablesarrayref);
+
+ set_default_productversion_if_required($allvariableshashref);
+ add_variables_to_allvariableshashref($allvariableshashref);
+ overwrite_branding( $allvariableshashref );
+
+ return $allsettingsarrayref, $allvariableshashref;
+}
+
#################################################
# Getting data from path file and zip list file
#################################################
More information about the Libreoffice-commits
mailing list