my $refresh = &::getChanConfDefault("freshmeatRefreshInterval",
"", 24) * 60 * 60 * 7;
- my $last_refresh = &::dbGet("freshmeat", "latest_version", "projectname_short='_'");
+ my $last_refresh = &::dbGet("freshmeat", "latest_version", "projectname_short=".&::dbQuote('_'));
my $renewtable = 0;
if (defined $last_refresh and $last_refresh =~ /^\d+$/) {
if ($renewtable) {
if ($$ == $::bot_pid) {
&::Forker("freshmeat", sub {
- &downloadIndex();
- &Freshmeat($sstr);
+ &Freshmeat($sstr) if &downloadIndex();
} );
# both parent/fork runs here, in case the following looks weird.
} else {
}
}
-sub showPackage {
+sub packageText {
my ($pkg) = @_;
- my @fm = &::dbGet("freshmeat", "*",
- "projectname_short=".&::dbQuote($pkg) );
+ my %fm = &::dbGetColNiceHash("freshmeat", "*", "projectname_short=".&::dbQuote($pkg));
- if (scalar @fm) { #1: perfect match of name.
+ if (scalar keys %fm) { #1: perfect match of name.
my $retval;
- $retval = "$fm[0] \002(\002$fm[5]\002)\002, ";
-# $retval .= "section $fm[3], ";
- $retval .= "is $fm[2]. ";
- $retval .= "Version: \002$fm[1]\002, ";
-# $retval .= "Development: \002$fm[2]\002. ";
- $retval .= $fm[4];
-### ???
-# $retval .= " deb: ".$fm[3] if ($fm[3] ne ""); # 'deb'.
+ $retval = "$fm{'projectname_short'} \002(\002$fm{'desc_short'}\002)\002, ";
+ $retval .= "is $fm{'license'}. ";
+ $retval .= "Version: \002$fm{'latest_version'}\002, $fm{'url_homepage'}";
+ return $retval;
+ } else {
+ return;
+ }
+}
+
+sub showPackage {
+ my ($pkg) = @_;
+ my ($retval);
+ if ($retval = packageText($pkg)) {
&::performStrictReply($retval);
return 1;
} else {
}
sub randPackage {
- my @fm = &::randKey("freshmeat","*");
-
- if (scalar @fm) { #1: perfect match of name.
- my $retval;
- $retval = "$fm[0] \002(\002$fm[5]\002)\002, ";
-# $retval .= "section $fm[3], ";
- $retval .= "is $fm[2]. ";
- $retval .= "Version: \002$fm[1]\002, ";
-# $retval .= "Development: \002$fm[2]\002. ";
- $retval .= $fm[4];
-### ???
-# $retval .= " deb: ".$fm[3] if ($fm[3] ne ""); # 'deb'.
-
- return $retval;
- } else {
- return;
- }
+ my @fm = &::randKey("freshmeat","*");
+ return &packageText($fm[0]);
}
sub downloadIndex {
if (!&::loadPerlModule("XML::Parser")) {
&::WARN("don't have xml::parser...");
- return;
+ return 0;
}
my $p = new XML::Parser(Style => 'Objects');
my %pkg;
if (! -e $idx) {
&::msg($::who, "the freshmeat butcher is closed.");
- return;
+ return 0;
}
if ( -s $idx < 100000) {
&::DEBUG("FM: index too small?");
unlink $idx;
&::msg($::who, "internal error?");
- return;
+ return 0;
}
if ($idx =~ /bz2$/) {
&::dbSet("freshmeat",
{ "projectname_short" => "_" },
{ "latest_version" => time(),
- "desc_short" => "" }
+ "desc_short" => "dummy project to track date" }
);
# &::dbRaw("LOCK", "LOCK TABLES freshmeat WRITE");
my $count = &::countKeys("freshmeat");
&::status("Freshmeat: $count entries loaded.");
+ return 1;
}
sub freshmeatAnnounce {
$i++;
my %data;
foreach(@cols) {
- $data{$_} = $pkg{$_};
+ $data{$_} = $pkg{$_} if ($pkg{$_});
}
&::dbReplace("freshmeat", "projectname_short", %data);
undef %data;
use vars qw(%factoids %freshmeat %seen %rootwarn); # db hash.
-
{
my %formats = (
'factoids', [
'locked_time'
],
'freshmeat', [
- 'name',
- 'stable',
- 'devel',
- 'section',
+ 'projectname_short',
+ 'latest_version',
'license',
- 'homepage',
- 'download',
- 'changelog',
- 'deb',
- 'rpm',
- 'link',
- 'oneliner'
+ 'url_homepage',
+ 'desc_short'
],
'rootwarn', [
'nick',
return(@retval);
}
- &DEBUG("dbGet: select => '$select'.");
+ &DEBUG("dbGet: select=>'$select'.");
my @array = split "$;", ${"$table"}{lc $val};
unshift(@array,$key);
for (0 .. $#format) {
my $str = $format[$_];
next unless (grep /^$str$/, split(/\,/, $select));
$array[$_] ||= '';
- &DEBUG("dG: pushing $format[$_]=>'$array[$_]'.");
+ &DEBUG("dG: '$format[$_]'=>'$array[$_]'.");
push(@retval, $array[$_]);
}
$array[$i - 1]=$hash{$col};
$array[$i - 1]='' unless $array[$i - 1];
delete $hash{$col};
- &DEBUG("dbI: setting $table->$primkey\{$col\} => '$array[$i - 1]'.");
+ &DEBUG("dbI: '$col'=>'$array[$i - 1]'");
}
if (scalar keys %hash) {
&ERROR("dbI: not added...");
foreach (keys %hash) {
- &ERROR("dbI: '$_' => '$hash{$_}'");
+ &ERROR("dbI: '$_'=>'$hash{$_}'");
}
return 0;
}
}
sub dbUpdate {
- &FIXME("STUB: &dbUpdate(@_); => somehow use dbInsert!");
+ &FIXME("STUB: &dbUpdate(@_);=>somehow use dbInsert!");
}
#####
my $where = $key . "=" . $phref->{$key};
my %hash = &dbGetColNiceHash($table, "*", $where);
+ $hash{$key}=$phref->{$key};
foreach (keys %{$href}) {
&DEBUG("dbSet: setting $_=${$href}{$_}");
$hash{$_} = ${$href}{$_};
}
sub randKey {
- &FIXME("STUB: &randKey(@_);");
+ &DEBUG("STUB: &randKey(@_);");
+ my @format = &dbGetColInfo($table);
+ if (!scalar @format) {
+ return;
+ }
+
+ my $rand = int(rand(&countKeys($table) - 1));
+ my @keys = keys %{$table};
+ &dbGet($table, '*', "@format[0]=@keys[$rand]");
+}
+
+#####
+# Usage: &deleteTable($table);
+sub deleteTable {
+ my ($table) = @_;
+ &FIXME("STUB: deleteTable($table)");
}
##### $select is misleading???