# File: cpanfile # Purpose: Selects and installs PBot dependencies. # # Install a minimum bare-bones PBot (no Plugins or modules): # cpanm -n --installdeps . # # Install a fully featured PBot (without Windows compiler-vm support): # cpanm -n --installdeps . --with-all-features --without-feature compiler_vm_win32 requires 'perl' => '5.020000'; # PBot core requires 'Cache::FileCache'; requires 'Carp'; requires 'DateTime'; requires 'DateTime::Format::Duration'; requires 'DateTime::Format::Flexible'; requires 'DBD::SQLite'; requires 'DBI'; requires 'Devel::StackTrace'; requires 'Data::Dumper'; requires 'Encode'; requires 'File::Basename'; requires 'File::Copy'; requires 'File::HomeDir'; requires 'File::Spec'; requires 'Getopt::Long'; requires 'HTML::Entities'; requires 'Import::Into'; requires 'IO::File'; requires 'IO::Select'; requires 'IO::Socket'; requires 'IO::Socket::INET'; requires 'IO::Socket::SSL'; requires 'IPC::Run'; requires 'JSON'; requires 'JSON::XS'; requires 'LWP::Protocol::https'; requires 'LWP::UserAgent'; requires 'LWP::UserAgent::Paranoid'; requires 'MIME::Base64'; requires 'Module::Refresh'; requires 'POSIX'; requires 'Scalar::Util'; requires 'Socket'; requires 'Storable'; requires 'Symbol'; requires 'Text::CSV'; requires 'Text::Levenshtein::XS'; requires 'Text::ParseWords'; requires 'Time::Duration'; requires 'Time::HiRes'; requires 'Unicode::Truncate'; requires 're::engine::RE2'; # Plugins feature ActionTrigger => sub { requires 'DBI'; requires 'Time::Duration'; requires 'Time::HiRes'; }; feature Plang => sub { requires 'Data::Dumper'; requires 'Text::ParseWords'; requires 'FindBin'; }; feature AntiAway => sub { }; feature AntiKickAutoRejoin => sub { requires 'Time::HiRes'; requires 'Time::Duration'; }; feature AntiNickSpam => sub { requires 'Time::Duration'; requires 'Time::HiRes'; }; feature AntiRepeat => sub { requires 'String::LCSS'; requires 'Time::HiRes'; requires 'POSIX'; }; feature AntiTwitter => sub { requires 'Time::HiRes'; requires 'Time::Duration'; }; feature AutoRejoin => sub { requires 'Time::HiRes'; requires 'Time::Duration'; }; feature Battleship => sub { requires 'Time::Duration'; requires 'Data::Dumper'; }; feature Connect4 => sub { requires 'Time::Duration'; requires 'Data::Dumper'; requires 'List::Util'; }; feature Counter => sub { requires 'DBI'; requires 'Time::Duration'; requires 'Time::HiRes'; }; feature Date => sub { requires 'Getopt::Long'; }; feature Example => sub { }; feature FuncBuiltins => sub { requires 'URI::Escape'; requires 'Lingua::EN::Tagger'; }; feature FuncGrep => sub { }; feature FuncPlural => sub { }; feature FuncSed => sub { }; feature GoogleSearch => sub { requires 'WWW::Google::UserAgent'; requires 'WWW::Google::CustomSearch'; requires 'HTML::Entities'; }; feature ParseDate => sub { requires 'Time::Duration'; }; feature Plang => sub { requires 'Getopt::Long'; }; feature Quotegrabs => sub { requires 'HTML::Entities'; requires 'Time::Duration'; requires 'Time::HiRes'; requires 'Getopt::Long'; requires 'POSIX'; requires 'DBI'; requires 'Carp'; }; feature RelayUnreg => sub { requires 'Time::HiRes'; }; feature RemindMe => sub { requires 'DBI'; requires 'Time::Duration'; requires 'Time::HiRes'; requires 'Getopt::Long'; }; feature RestrictedMod => sub { requires 'Storable'; }; feature Spinach => sub { requires 'JSON'; requires 'Lingua::EN::Fractions'; requires 'Lingua::EN::Numbers'; requires 'Lingua::EN::Numbers::Years'; requires 'Lingua::Stem'; requires 'Lingua::EN::ABC'; requires 'Time::Duration'; requires 'Text::Unidecode'; requires 'Encode'; requires 'Data::Dumper'; requires 'DBI'; requires 'Carp'; requires 'FindBin'; requires 'Math::Expression::Evaluator'; }; feature TypoSub => sub { }; feature UrlTitles => sub { }; feature Weather => sub { requires 'XML::LibXML'; requires 'Getopt::Long'; }; feature Wordle => sub { requires 'Text::Unidecode'; }; feature WordMorph => sub { requires 'Storable'; requires 'Text::Levenshtein::XS'; }; feature Wolfram => sub { requires 'LWP::UserAgent::Paranoid'; requires 'URI::Escape'; }; feature Wttr => sub { requires 'JSON'; requires 'URI::Escape'; requires 'Getopt::Long'; }; # modules feature ago => sub { requires 'Time::Duration'; }; feature bashfaq => sub { }; feature bashpf => sub { }; feature c11std => sub { }; feature c2english => sub { requires 'Text::Balanced'; requires 'Parse::RecDescent'; requires 'Getopt::Std'; requires 'Data::Dumper'; }; feature c99std => sub { }; feature cdecl => sub { }; feature cjeopardy => sub { requires 'Exporter'; requires 'DBI'; requires 'Carp'; requires 'Time::HiRes'; requires 'Time::Duration'; requires 'Fcntl'; requires 'Text::Levenshtein'; requires 'POSIX'; }; feature codepad => sub { requires 'LWP::UserAgent'; requires 'URI::Escape'; requires 'HTML::Entities'; requires 'HTML::Parse'; requires 'HTML::FormatText'; requires 'IPC::Open2'; requires 'Text::Balanced'; }; feature compiler_block => sub { requires 'IO::Socket::INET'; requires 'JSON'; }; feature compiler_client => sub { requires 'IO::Socket'; requires 'JSON'; }; feature compiler_vm => sub { requires 'HTML::Entities'; requires 'IO::Socket'; requires 'JSON'; requires 'Net::hostent'; requires 'IPC::Run'; requires 'IPC::Open2'; requires 'IPC::Shareable'; requires 'Text::Balanced'; requires 'Time::HiRes'; requires 'File::Basename'; requires 'English'; requires 'LWP::UserAgent'; requires 'Getopt::Long'; requires 'Encode'; requires 'Data::Dumper'; requires 'Text::WordDiff'; }; feature compiler_vm_win32 => sub { requires 'IO::Socket'; requires 'Net::hostent'; requires 'Win32::MMF'; requires 'Win32::MMF::Shareable'; }; feature define => sub { requires 'LWP::Simple'; }; feature dice_roll => sub { requires 'Games::Dice'; }; feature dict => sub { requires 'Net::Dict'; requires 'AppConfig::Std'; }; feature expand_macros => sub { requires 'IPC::Open2'; requires 'Text::Balanced'; requires 'IO::Socket'; requires 'LWP::UserAgent'; }; feature fnord => sub { }; feature funnyish_quote => sub { requires 'LWP::UserAgent'; }; feature gdefine => sub { requires 'LWP::UserAgent'; }; feature gen_cfacts => sub { requires 'HTML::Entities'; }; feature gencstd => sub { requires 'HTML::Entities'; requires 'Data::Dumper'; }; feature get_title => sub { requires 'LWP::UserAgent'; requires 'HTML::Entities'; requires 'Text::Levenshtein'; requires 'Time::HiRes'; }; feature getcfact => sub { }; feature headlines => sub { requires 'XML::RSS'; requires 'LWP::Simple'; }; feature insult => sub { requires 'LWP::Simple'; }; feature lookupbot => sub { requires 'LWP::Simple'; requires 'LWP::UserAgent'; requires 'Encode'; requires 'CGI'; requires 'HTML::Entities'; }; feature love_quote => sub { requires 'LWP::UserAgent::WithCache'; }; feature man => sub { requires 'LWP::Simple'; }; feature map => sub { requires 'LWP::Simple'; }; feature math => sub { requires 'Math::Units'; }; feature nickometer => sub { requires 'Getopt::Std'; requires 'Math::Trig'; }; feature prototype => sub { requires 'LWP::Simple'; }; feature qalc => sub { }; feature random_quote => sub { requires 'URI::Escape'; requires 'LWP::UserAgent::WithCache'; }; feature rpn => sub { requires 'List::Util'; }; feature trans => sub { }; feature urban => sub { requires 'WebService::UrbanDictionary'; requires 'Getopt::Long'; }; feature wikipedia => sub { requires 'WWW::Wikipedia'; requires 'HTML::Parse'; requires 'HTML::FormatText'; }; feature wiktionary => sub { requires 'Cache::FileCache'; requires 'Encode'; requires 'Getopt::Long'; requires 'JSON'; };