From e4836cb48bab10e0aa90bfa3f7c8b5c177b13dd1 Mon Sep 17 00:00:00 2001 From: dms Date: Fri, 22 Sep 2000 11:56:21 +0000 Subject: [PATCH] moved more functions to new hook scheme git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk/blootbot@126 c11ca15a-4712-0410-83d8-924469b57eb5 --- src/CommandStubs.pl | 120 ++++++++++---------------------------------- 1 file changed, 27 insertions(+), 93 deletions(-) diff --git a/src/CommandStubs.pl b/src/CommandStubs.pl index f11394a..dad1e54 100644 --- a/src/CommandStubs.pl +++ b/src/CommandStubs.pl @@ -41,11 +41,14 @@ sub addCmdHook { sub parseCmdHook { my @args = split(' ', $message); + &shmFlush(); + foreach (keys %cmdhooks) { my $ident = $_; &DEBUG("cmdhooks{$ident} => ..."); next unless ($args[0] =~ /^$ident$/i); + shift(@args); # just gotta do it. &DEBUG("pCH: MATCHED!"); my %hash = %{ $cmdhooks{$ident} }; @@ -62,20 +65,42 @@ sub parseCmdHook { ### FORKER,IDENTIFIER,CODEREF. if (exists $hash{'Forker'}) { - &Forker($hash{'Identifier'}, \&{$hash{'CODEREF'}}); + &Forker($hash{'Identifier'}, sub { \&{$hash{'CODEREF'}}(@args) } ); } ### CMDSTATS. if (exists $hash{'Cmdstats'}) { $cmdstats{$hash{'Cmdstats'}}++; } + + return 1; } &DEBUG("pCH: ended."); + return 0; } &addCmdHook('d?bugs', ('CODEREF' => 'debianBugs', - 'Forker' => 1, 'Identifier' => 'debianExtra', 'Cmdstats' => 1) ); + 'Forker' => 1, 'Identifier' => 'debianExtra', + 'Cmdstats' => 'Debian Bugs') ); +&addCmdHook('dauthor', ('CODEREF' => 'Debian::searchAuthor', + 'Forker' => 1, 'Identifier' => 'debian', + 'Cmdstats' => 'Debian Author Search', 'Help' => "dauthor" ) ); +&addCmdHook('(d|search)desc', ('CODEREF' => 'Debian::searchDesc', + 'Forker' => 1, 'Identifier' => 'debian', + 'Cmdstats' => 'Debian Desc Search', 'Help' => "ddesc" ) ); +&addCmdHook('dincoming', ('CODEREF' => 'Debian::generateIncoming', + 'Forker' => 1, 'Identifier' => 'debian' ) ); +&addCmdHook('dstats', ('CODEREF' => 'Debian::infoStats', + 'Forker' => 1, 'Identifier' => 'debian', + 'Cmdstats' => 'Debian Statistics' ) ); +&addCmdHook('d?contents', ('CODEREF' => 'Debian::searchContents', + 'Forker' => 1, 'Identifier' => 'debian', + 'Cmdstats' => 'Debian Contents Search', 'Help' => "contents" ) ); +&addCmdHook('d?find', ('CODEREF' => 'Debian::DebianFind', + 'Forker' => 1, 'Identifier' => 'debian', + 'Cmdstats' => 'Debian Search', 'Help' => "find" ) ); + sub Modules { if (!defined $message) { @@ -140,97 +165,6 @@ sub Modules { return $noreply; } - if ($message =~ /^d?bugs$/i) { - return $noreply unless (&hasParam("debianExtra")); - - &Forker("debianExtra", sub { &debianBugs(); } ); - - $cmdstats{'Debian Bugs'}++; - return $noreply; - } - - # Debian Author Search. - if ($message =~ /^dauthor(\s+(.*))?$/i) { - return $noreply unless (&hasParam("debian")); - - my $query = $2; - if (!defined $query) { - &help("dauthor"); - return $noreply; - } - - &Forker("debian", sub { &Debian::searchAuthor($query); } ); - - $cmdstats{'Debian Author Search'}++; - return $noreply; - } - - # Debian Author Search. - if ($message =~ /^(d|search)desc(\s+(.*))?$/i) { - return $noreply unless (&hasParam("debian")); - - my $query = $2; - if (!defined $query) { - &help("ddesc"); - return $noreply; - } - - &Forker("debian", sub { &Debian::searchDesc($query); } ); - - $cmdstats{'Debian Desc Search'}++; - return $noreply; - } - - # Debian Incoming Search. - if ($message =~ /^dincoming$/i) { - return $noreply unless (&hasParam("debian")); - - &Forker("debian", sub { &Debian::generateIncoming(); } ); - - $cmdstats{'Debian Incoming Search'}++; - return $noreply; - } - - # Debian Distro(Package) Stats - if ($message =~ /^dstats(\s+(.*))?$/i) { - return $noreply unless (&hasParam("debian")); - my $dist = $2 || $Debian::defaultdist; - - &Forker("debian", sub { &Debian::infoStats($dist); } ); - - $cmdstats{'Debian Statistics'}++; - return $noreply; - } - - # Debian Contents search. - if ($message =~ /^d?contents(\s+(.*))?$/i) { - return $noreply unless (&hasParam("debian")); - - my $query = $2; - if (!defined $query) { - &help("contents"); - return $noreply; - } - - &Forker("debian", sub { &Debian::searchContents($query); } ); - - $cmdstats{'Debian Contents Search'}++; - return $noreply; - } - - # Debian Package info. - if ($message =~ /^d?find(\s+(.*))?$/i and &IsParam("debian")) { - my $string = $2; - - if (!defined $string) { - &help("find"); - return $noreply; - } - - &Forker("debian", sub { &Debian::DebianFind($string); } ); - return $noreply; - } - if (&IsParam("debian")) { my $debiancmd = 'conflicts?|depends?|desc|file|info|provides?'; $debiancmd .= '|recommends?|suggests?|maint|maintainer'; -- 2.39.2