User:ImplSearchBot/Code: Difference between revisions

Content added Content deleted
m (ImplSearchBot:0)
m (ImplSearchBot:0)
Line 64: Line 64:
closedir(CACHEDIR);
closedir(CACHEDIR);


&out(scalar @initialcache . " categories initially cached\n", 3);
&out(scalar @initialcache . " categories initially cached\n", 4);


# Handles interaction with the wiki.
# Handles interaction with the wiki.
Line 115: Line 115:
{
{
my $pagename = "Tasks not implemented in $language";
my $pagename = "Tasks not implemented in $language";
&out("Preparing data for:$pagename\n", 3);
&out("Preparing data for:$pagename\n", 4);
my $hashref = $impldiff{$language}->{'impl'};
my $hashref = $impldiff{$language}->{'impl'};
my %implemented = %$hashref;
my %implemented = %$hashref;
Line 212: Line 212:
&postpage("User:ImplSearchBot/Code", "<$tag perl>$botsource</$tag>", 0);
&postpage("User:ImplSearchBot/Code", "<$tag perl>$botsource</$tag>", 0);


&out("Updating cache\n", 3);
&out("Updating cache\n", 4);
&commitcache();
&commitcache();


&out("Done\n", 2);
&out("Done\n", 3);


exit(0);
exit(0);
Line 287: Line 287:
$pagename .= ".wikitxt";
$pagename .= ".wikitxt";


&out("Saving: $pagename\n", 2);
&out("Saving: $pagename\n", 3);
open my $outfile, '>', $pagename
open my $outfile, '>', $pagename
Line 299: Line 299:
else
else
{
{
&out("Posting $pagename\n", 2);
&out("Posting $pagename\n", 3);


$editor->edit($pagename, $pagedata, "ImplSearchBot:$remark", $minoredit)
$editor->edit($pagename, $pagedata, "ImplSearchBot:$remark", $minoredit)
Line 323: Line 323:
my $data = shift;
my $data = shift;
my $filename = $options{'cachepath'} . &sanitizenamefs($dataname . ".json");
my $filename = $options{'cachepath'} . &sanitizenamefs($dataname . ".json");
unless( exists $options{'post'} )
&out("Caching $dataname to $filename...", 3);
{
# This is just a test run. Best not to overwrite our cache.
&out("Skipping caching of $dataname to $filename...", 4);
return;
}
my $outfile;
my $outfile;
unless(open $outfile, '>', $filename)
unless(open $outfile, '>', $filename)
{
{
&out("Failed to open $filename: $!\n", 1);
&out("Failed to open $filename for caching: $!\n", 1);
return;
return;
}
}
Line 333: Line 338:
print $outfile to_json($data);
print $outfile to_json($data);
close $outfile;
close $outfile;
&out(scalar $data . " members cached.\n", 4);
&out(scalar $data . " members cached to $filename.\n", 5);
}
}


Line 340: Line 345:
my $dataname = shift;
my $dataname = shift;
my $filename = $options{'cachepath'} . &sanitizenamefs($dataname . ".json");
my $filename = $options{'cachepath'} . &sanitizenamefs($dataname . ".json");
&out("Getting cached data for $dataname from $filename...", 3);
&out("Getting cached data for $dataname from $filename...", 4);
my $infile;
my $infile;
unless (open $infile, '<', $filename)
unless (open $infile, '<', $filename)
Line 353: Line 358:


my $cacheddata = from_json($jsondata);
my $cacheddata = from_json($jsondata);
&out(scalar @$cacheddata . " members retrieved\n", 4);
&out(scalar @$cacheddata . " cache members retrieved from $filename\n", 5);


return $cacheddata;
return $cacheddata;
Line 361: Line 366:
{
{
my $categoryname = shift;
my $categoryname = shift;
&out("Getting category contents for $categoryname...", 3);
&out("Getting category contents for $categoryname...", 4);
my @categorycontents = $editor->get_pages_in_category($categoryname);
my @categorycontents = $editor->get_pages_in_category($categoryname);
&out(scalar @categorycontents . " members retrieved\n", 3);
&out(scalar @categorycontents . " members retrieved for $categoryname\n", 5);


my ($removed, $added) = &diffcat(&getcacheddata($categoryname), \@categorycontents);
my ($removed, $added) = &diffcat(&getcacheddata($categoryname), \@categorycontents);


&out(scalar @$removed . " removed, " . @$added . " added to $categoryname\n", (scalar @$removed + scalar @$added) > 0 ? 2 : 3);
&out(scalar @$removed . " removed, " . @$added . " added to $categoryname\n", &getloglevelfromdiff(2, $removed, $added));


&cachedata("$categoryname", \@categorycontents);
&cachedata("$categoryname", \@categorycontents);
Line 377: Line 382:
{
{
my $categoryname = shift;
my $categoryname = shift;
&out("Getting work for $categoryname.\n",3);
&out("Getting work for $categoryname.\n",4);
my $olddata = &getcacheddata($categoryname);
my $olddata = &getcacheddata($categoryname);
my @newdata = &getcategory($categoryname);
my @newdata = &getcategory($categoryname);
Line 388: Line 393:


return @work;
return @work;
}

sub getloglevelfromdiff
{
my $base = shift;
my $first = shift;
my $second = shift;
return $base
if((scalar @$first + scalar @$second) > 0);
return $base + 1;
}
}


Line 393: Line 408:
{
{
my $language = shift;
my $language = shift;
&out("Getting lang work for $language\n", 3);
&out("Getting lang work for $language\n", 4);
my %impl;
my %impl;
foreach my $workitem (&getwork("Category:$language"))
foreach my $workitem (&getwork("Category:$language"))
Line 418: Line 433:
# First, find out if we've added any files.
# First, find out if we've added any files.
my $cachepath = $options{'cachepath'};
my $cachepath = $options{'cachepath'};
print "Cachepath: $cachepath\n";
opendir(CACHEDIR, $cachepath);
opendir(CACHEDIR, $cachepath);


Line 428: Line 442:
my ($added, $removed) = &diffcat(\@current, \@initialcache);
my ($added, $removed) = &diffcat(\@current, \@initialcache);
&out("Detected " . scalar @$added . " new cache files and " . scalar @$removed . " removed\n",2);
&out("Detected " . scalar @$added . " new cache files and " . scalar @$removed . " removed\n",&getloglevelfromdiff(2, $added, $removed));
if ((scalar @$added + scalar @$removed ) > 0)
if ((scalar @$added + scalar @$removed ) > 0)
Line 434: Line 448:
foreach my $cachefile (@$added)
foreach my $cachefile (@$added)
{
{
print "cachepath: $cachepath, cachefile: $cachefile\n";
&svn('add', $cachepath . $cachefile);;
&svn('add', $cachepath . $cachefile);;
}
}
Line 440: Line 453:
foreach my $cachefile (@$removed)
foreach my $cachefile (@$removed)
{
{
print "cachepath: $cachepath, cachefile: $cachefile\n";
&svn('remove', $cachepath . $cachefile);;
&svn('remove', $cachepath . $cachefile);;
}
}
Line 459: Line 471:
$string .= "\n";
$string .= "\n";


&out($string, 2);
&out($string, 3);


system 'svn', @args
system 'svn', @args