Added the possibility to change a groups description.
[licom.git] / mutt-licom.pl
index c4d5750..e7fbcbd 100755 (executable)
@@ -9,10 +9,35 @@ use lib ("$Bin/lib");
 use LiCoM::Config (qw(get_config));
 use LiCoM::Person;
 
-our $Config = get_config ();
+our $Config;
 
-die unless (defined ($Config->{'uri'}) and defined ($Config->{'bind_dn'})
-       and defined ($Config->{'password'}));
+if (-e $ENV{'HOME'} . '/.licomrc')
+{
+       $Config = get_config ($ENV{'HOME'} . '/.licomrc');
+}
+elsif (-e '/etc/licom/licom.conf')
+{
+       $Config = get_config ('/etc/licom/licom.conf');
+}
+else
+{
+       $Config = get_config ();
+}
+
+if ($ENV{'DEBUG'})
+{
+       require Data::Dumper;
+       print STDERR Data::Dumper->Dump ([$Config], ['Config']);
+}
+
+unless (defined ($Config->{'uri'}) and defined ($Config->{'bind_dn'})
+       and defined ($Config->{'password'}))
+{
+       die (<<ERROR);
+The configuration has not been found or is not complete. At least the options
+uri, bind_dn and password are needed.
+ERROR
+}
 
 $Config->{'base_dn'} = $Config->{'bind_dn'} unless (defined ($Config->{'base_dn'}));
 
@@ -42,15 +67,19 @@ our @Matches = LiCoM::Person->search (@Patterns, [[mail => '*']]);
 
 print STDOUT scalar (@Matches), ' ', (scalar (@Matches) == 1 ? 'entry' : 'entries'), " found.\n";
 
-for (@Matches)
+for (sort { $a->name () cmp $b->name () } (@Matches))
 {
        my $person = $_;
        my $cn = $person->name ();
        my @mail = $person->get ('mail');
+       my @groups = $person->get ('group');
+       my $info = join (', ', sort (@groups));
+
+       $info = "($info)" if ($info);
 
-       for (@mail)
+       for (sort (@mail))
        {
-               print "$_\t$cn\tFound by LiCoM\n";
+               print "$_\t$cn\t$info\n";
        }
 }