3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-11-25 13:29:29 +01:00
pbot/updates/4422_rename_modules_to_applets.pl
Pragmatic Software 3d97dc2c33 Rename "modules" to "applets"
"Applet" is a much better name for the external command-line
scripts and programs that can be loaded as PBot commands. They
will no longer be confused with Perl modules.

https://en.wikipedia.org/wiki/Applet
2021-11-19 18:05:50 -08:00

122 lines
4.0 KiB
Perl
Executable File

#!/usr/bin/env perl
# Rename modules to applets
use warnings; use strict;
BEGIN {
use File::Basename;
my $location = -l __FILE__ ? dirname readlink __FILE__ : dirname __FILE__;
unshift @INC, $location;
}
use lib4422::HashObject;
use lib4422::DualIndexHashObject;
use lib4422::DualIndexSQLiteObject;
use lib3503::PBot;
my ($data_dir, $version, $last_update) = @ARGV;
print "Adding version info... version: $version, last_update: $last_update, data_dir: $data_dir\n";
my $pbot = lib3503::PBot->new;
my $data;
# update registry
my $registry = lib4422::DualIndexHashObject->new(name => 'Registry', filename => "$data_dir/registry", pbot => $pbot);
$registry->load;
$data = $registry->get_data('general', 'module_dir');
$registry->remove('general', 'module_dir', undef, 1);
$data->{value} =~ s/modules/applets/g;
$registry->add('general', 'applet_dir', $data, 1);
$data = $registry->get_data('general', 'module_repo');
$registry->remove('general', 'module_repo', undef, 1);
$data->{value} =~ s|/modules/|/applets/|;
$registry->add('general', 'applet_repo', $data, 1);
$data = $registry->get_data('general', 'module_timeout');
$registry->remove('general', 'module_timeout', undef, 1);
$registry->add('general', 'applet_timeout', $data, 1);
$registry->save;
# update command help text
my $commands = lib4422::HashObject->new(name => 'Commands', filename => "$data_dir/commands", pbot => $pbot);
$commands->load;
$commands->set('load', 'help', 'This command loads an applet as a PBot command. See https://github.com/pragma-/pbot/blob/master/doc/Admin.md#load', 1);
$commands->set('unload', 'help', 'Unloads an applet and removes its associated command. See https://github.com/pragma-/pbot/blob/master/doc/Admin.md#unload', 1);
$commands->save;
# update factoids
my $factoids = lib4422::DualIndexSQLiteObject->new(name => 'Factoids', filename => "$data_dir/factoids.sqlite3", pbot => $pbot);
$factoids->load;
$factoids->load_metadata;
$data = $factoids->get_data('.*', 'cjeopardy_answer_module');
$factoids->remove('.*', 'cjeopardy_answer_module', undef, 1);
$factoids->add('.*', 'cjeopardy_answer_applet', $data, 1);
$data = $factoids->get_data('.*', 'cjeopardy_filter_module');
$factoids->remove('.*', 'cjeopardy_filter_module', undef, 1);
$factoids->add('.*', 'cjeopardy_filter_applet', $data, 1);
$data = $factoids->get_data('.*', 'cjeopardy_hint_module');
$factoids->remove('.*', 'cjeopardy_hint_module', undef, 1);
$factoids->add('.*', 'cjeopardy_hint_applet', $data, 1);
$data = $factoids->get_data('.*', 'cjeopardy_scores_module');
$factoids->remove('.*', 'cjeopardy_scores_module', undef, 1);
$factoids->add('.*', 'cjeopardy_scores_applet', $data, 1);
$data = $factoids->get_data('.*', 'cjeopardy_module');
$factoids->remove('.*', 'cjeopardy_module', undef, 1);
$factoids->add('.*', 'cjeopardy_applet', $data, 1);
$data = $factoids->get_data('.*', 'date_module');
$factoids->remove('.*', 'date_module', undef, 1);
$factoids->add('.*', 'date_applet', $data, 1);
$data = $factoids->get_data('.*', 'rpn_module');
$factoids->remove('.*', 'rpn_module', undef, 1);
$factoids->add('.*', 'rpn_applet', $data, 1);
$data = $factoids->get_data('.*', 'modules');
$factoids->remove('.*', 'modules', undef, 1);
$data->{action} = '/call list applets';
$factoids->add('.*', 'applets', $data, 1);
$factoids->save;
my @keys;
my $iter = $factoids->get_each('index1', 'index2', 'type = module');
while ($data = $factoids->get_next($iter), defined $data) {
push @keys, [ $data->{index1}, $data->{index2} ];
}
foreach my $pair (@keys) {
$factoids->set($pair->[0], $pair->[1], 'type', 'applet', 1);
}
$iter = $factoids->get_each('index1', 'index2', 'action ~ /call%_module%');
@keys = ();
while ($data = $factoids->get_next($iter), defined $data) {
push @keys, [ $data->{index1}, $data->{index2} ];
}
foreach my $pair (@keys) {
my ($index1, $index2) = ($pair->[0], $pair->[1]);
$data = $factoids->get_data($index1, $index2, 'action');
$data =~ s/_module/_applet/;
$data = { action => $data };
$factoids->add($index1, $index2, $data, 1);
}
$factoids->end;
exit 0;