#!/usr/bin/env perl
#
# Script to send an email to non-members on selected mailing lists
# asking if they would like to become a member of NUUG.  The script
# should be used 1-2 times a year.

use warnings;
use strict;

BEGIN {
    # Add script location to include path
    my @p = split(m%/%, $0); pop @p; push @INC, join("/", @p);
}

use File::Temp qw/ tempfile tempdir /;
use medlemsliste;

my $templatename = "mal-blimedlem.txt";

my @lists = qw(
  aktive
  nuug-commits
  fiksgatami
  dugnadsnett
  patent
  stavanger
  interesserte
  kart
  jobbmarked
);

my %memberaddress;

sub process_memberentry {
    my $memberinforef = shift;
    my $email = $memberinforef->{'EmailAddress'};
    $memberaddress{$email} = 1 if defined $email;
 }
load_memberslist("medlemsliste.csv", \&process_memberentry);

my %seenaddress;
for my $list (@lists) {
    open(my $fh,  "/usr/lib/mailman/bin/list_members $list |") || die "failed to run list_members";
    while (<$fh>) {
	chomp;
        my $address = $_;
	if (! exists $memberaddress{$address} && ! exists $seenaddress{$address}) {
	    $seenaddress{$address} = $list;
	}
    }
    close($fh);
}

my ($fh, $csvfilename) = tempfile();
print $fh "LISTNAME;TO\n";
for my $address (sort keys %seenaddress) {
    print $fh "$seenaddress{$address};$address\n";
}
close($fh);

print  "Run 'mass-mail-merge $templatename $csvfilename' to send email.\n";
