#!/usr/bin/perl -w

# aggsearch - agreguje dane z wyszukiwarek
#
# Plik jest rozpowszechniany na takiej licencji, jak sam Perl.
#
# by rik - ora@rikrose.net

######################
# etap obsugi       #
######################

use strict;

# jeli trzeba, zmie.
my $pluginDir = "plugins";

# jeli uytkownik nie poda, czego szuka, zapytajmy.
unless (@ARGV) { print 'uycie: aggsearch "warunki wyszukiwania"', "\n"; exit; }

# procedura ta wywouje aktualn wtyczk, pobiera dane rozdzielone
# tabulatorami i wstawia je do tablicy wynikowej.
sub query {
    my ($plugin, $args, @results) = (shift, shift);
    my $command = $pluginDir . "/" . $plugin . " " . (join " ", @$args);
    open RESULTS, "$command |" or die "Wtyczka $plugin spowodowaa bd!\n";
    while (<RESULTS>) {
        chomp; # usuwamy nowy wiersz.
        my ($url, $name) = split /\t/;
        push @results, [$name, $url];
    } close RESULTS;

    return @results;
}

######################
# szukanie wtyczek   #
######################

opendir PLUGINS, $pluginDir
   or die "Nie znaleziono katalogu wtyczek \"$pluginDir\"".
     "! Prosz utworzy i wstawi do wtyczki\n";
my @plugins = grep {
    stat $pluginDir . "/$_"; -x _ && ! -d _ && ! /\~$/;
} readdir PLUGINS; closedir PLUGINS;


######################
# etap zapytania     #
######################

for my $plugin (@plugins){
    print "$plugin results:\n";
    my @results = query $plugin, \@ARGV;
    for my $listref (@results){
        print " $listref->[0] : $listref->[1] \n"
    } print "\n";
}

exit 0;

