Store reverse tree (#575)

This commit is contained in:
Xavier Guimard 2016-03-22 20:48:30 +00:00
parent 33663e99e8
commit ca61a9631d
3 changed files with 29 additions and 0 deletions

View File

@ -20,6 +20,7 @@ has managerAttributesFile => ( isa => 'Str', is => 'ro', required => 1 );
has defaultValuesFile => ( isa => 'Str', is => 'ro', required => 1 );
has confConstantsFile => ( isa => 'Str', is => 'ro', required => 1 );
has firstLmConfFile => ( isa => 'Str', is => 'ro', required => 1 );
has reverseTreeFile => ( isa => 'Str', is => 'ro', required => 1 );
my @managerAttrKeys = qw(keyTest keyMsgFail select type test msgFail default);
my $format = 'Creating %-69s: ';
@ -364,6 +365,13 @@ $managerAttr}
print STDERR "done\n";
$self->buildZeroConf();
printf STDERR $format, $self->reverseTreeFile;
open( F, ">", $self->reverseTreeFile ) or die($!);
$jsonEnc->pretty(0);
print F $jsonEnc->encode($self->reverseScan(Lemonldap::NG::Manager::Build::Tree::tree(),'',{}));
close F;
print STDERR "done\n";
}
sub buildZeroConf {
@ -554,6 +562,24 @@ sub scanLeaf1 {
return @res;
}
sub reverseScan {
my ( $self, $tree, $path, $res ) = @_;
foreach my $elem ( @$tree ) {
$elem =~ s/^\*//;
if ( ref($elem) eq 'HASH' ) {
foreach (qw(nodes nodes_cond group)) {
$self->reverseScan($elem->{$_}, "$path$elem->{title}/", $res) if($elem->{$_});
}
}
else {
my $tmp = $path;
$tmp =~ s#/$##;
$res->{$elem} = $tmp;
}
}
return $res;
}
1;
__END__
@ -575,6 +601,7 @@ system.
managerAttributesFile => 'lib/Lemonldap/NG/Manager/Attributes.pm',
defaultValuesFile => "lib/Lemonldap/NG/Common/Conf/DefaultValues.pm",
firstLmConfFile => "_example/conf/lmConf-1.js",
reverseTreeFile => "site/static/reverseTree.json",
);
=head1 DESCRIPTION

File diff suppressed because one or more lines are too long

View File

@ -10,5 +10,6 @@ Lemonldap::NG::Manager::Build->run(
defaultValuesFile => 'lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf/DefaultValues.pm',
confConstantsFile => 'lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf/Constants.pm',
firstLmConfFile => '_example/conf/lmConf-1.js',
reverseTreeFile => 'lemonldap-ng-manager/site/static/reverseTree.json',
);