diff options
author | Olivier Thauvin <nanardon@mandriva.org> | 2006-06-09 21:20:47 +0000 |
---|---|---|
committer | Olivier Thauvin <nanardon@mandriva.org> | 2006-06-09 21:20:47 +0000 |
commit | 39cbed22c071aea381101a9612485118692144d0 (patch) | |
tree | 56a541327af99f9d09179b3267e76994d7183ee1 | |
parent | b3fad5d69e480031e0fcd7eba8d3a926287696cc (diff) | |
download | perl-MDV-Distribconf-39cbed22c071aea381101a9612485118692144d0.tar perl-MDV-Distribconf-39cbed22c071aea381101a9612485118692144d0.tar.gz perl-MDV-Distribconf-39cbed22c071aea381101a9612485118692144d0.tar.bz2 perl-MDV-Distribconf-39cbed22c071aea381101a9612485118692144d0.tar.xz perl-MDV-Distribconf-39cbed22c071aea381101a9612485118692144d0.zip |
- add settree() function
-rw-r--r-- | lib/MDV/Distribconf.pm | 29 | ||||
-rw-r--r-- | t/01distribconf.t | 22 |
2 files changed, 50 insertions, 1 deletions
diff --git a/lib/MDV/Distribconf.pm b/lib/MDV/Distribconf.pm index 0779db0..ecb58fb 100644 --- a/lib/MDV/Distribconf.pm +++ b/lib/MDV/Distribconf.pm @@ -219,6 +219,35 @@ sub loadtree { return 1; } +=head2 $distrib->settree($spec) + +Virtual set the internal structure of the distrib. + +$spec can be 'mandrake' or 'mandriva' to automatically load a know structure +(old and new fascion, or a hashref: + + mediadir => 'media', + infodir => 'media/media_info', + +=cut + +sub settree { + my ($distrib, $spec) = @_; + + if (ref($spec) eq 'HASH') { + foreach (qw(infodir mediadir)) { + $distrib->{$_} = $spec->{$_} || ''; + } + } elsif ($spec && $spec =~ /mandrake/i) { + $distrib->{infodir} = "Mandrake/base"; + $distrib->{mediadir} = "Mandrake"; + } else { # finally it can be everything, we do not care + $distrib->{infodir} = "media/media_info"; + $distrib->{mediadir} = "media"; + } +} + + =head2 $distrib->parse_hdlists($hdlists) Reads the F<hdlists> file whose path is given by the parameter $hdlist, diff --git a/t/01distribconf.t b/t/01distribconf.t index 8899d40..685718b 100644 --- a/t/01distribconf.t +++ b/t/01distribconf.t @@ -3,7 +3,7 @@ # $Id$ use strict; -use Test::More tests => 16; +use Test::More tests => 22; use_ok('MDV::Distribconf'); @@ -12,6 +12,7 @@ ok(my $dconf = MDV::Distribconf->new('/dev/null'), "Can get new MDV::Distribconf ok(!$dconf->load(), "loading wrong distrib give error"); } +{ ok(my $dconf = MDV::Distribconf->new('test'), "Can get new MDV::Distribconf"); ok($dconf->load(), "Can load conf"); @@ -28,4 +29,23 @@ ok($dconf->getpath(undef, 'media_info') =~ m!^/*media/media_info/?$!, "Can get m ok($dconf->getfullpath(undef, 'media_info') =~ m!^/*test/+media/media_info/?$!, "Can get media_info fullpath"); # vim color: */ ok($dconf->getpath('main', 'path') =~ m!^/*media/+main/?$!, "Can get media path"); # vim color: */ ok($dconf->getfullpath('main', 'path') =~ m!^/*test/*media/+main/?$!, "Can get media fullpath"); # vim color: */ +} +{ +ok(my $dconf = MDV::Distribconf->new('not_exists'), "Can get new MDV::Distribconf"); +$dconf->settree(); +ok($dconf->getpath(undef, 'media_info') =~ m!^/*media/media_info/?$!, "Can get media_info path"); # vim color: */ +} +{ +ok(my $dconf = MDV::Distribconf->new('not_exists'), "Can get new MDV::Distribconf"); +$dconf->settree('manDraKE'); +ok($dconf->getpath(undef, 'media_info') =~ m!^/*Mandrake/base/?$!, "Can get media_info path"); # vim color: */ +} +{ +ok(my $dconf = MDV::Distribconf->new('not_exists'), "Can get new MDV::Distribconf"); +$dconf->settree({ + mediadir => 'mediadir', + infodir => 'infodir', +}); +ok($dconf->getpath(undef, 'media_info') =~ m!^/*infodir/?$!, "Can get media_info path"); # vim color: */ +} |