#!perl
use strict;
use warnings;

use English;

my %required_modules = (
    'DBIx::Simple' => { cat => 'databases', port => 'p5-DBIx-Simple' },
    'Date::Calc'   => { cat => 'devel',     port => 'p5-Date-Calc'   },
    'Config::Std'  => { cat => 'devel',     port => 'p5-Config-Std'  },
    'MIME::Lite'   => { cat => 'mail',      port => 'p5-MIME-Lite'   },
    'MIME::Lite'   => { cat => 'mail',      port => 'p5-MIME-Lite'   },
    'Text::CSV'    => { cat => 'textproc',  port => 'p5-Text-CSV'    },
);


if ( lc($OSNAME) eq "freebsd" ) {

    foreach my $module ( keys %required_modules ) {

        my $category = $required_modules{$module}->{'cat'};
        my $portdir  = $required_modules{$module}->{'port'};
        die "cat/port not set" if (!$category || !$portdir);

        my ($registered_name) = $portdir =~ /^p5-(.*)$/;

        my $checkcmd = "/usr/sbin/pkg_info | /usr/bin/grep $registered_name";
        #print "$checkcmd\t";
        my $installed = `$checkcmd`;
        if ($installed) {
            print "$module is installed.\n";
            next;
        };

        print "installing $module\n";
        chdir "/usr/ports/$category/$portdir";
        system "make install distclean";
    }
    exit;
};

use CPAN; 
CPAN::install Date::Calc;
CPAN::install DBIx::Simple;
CPAN::install MIME::Lite;
CPAN::install Text::CSV;
CPAN::install Config::Std;