#!/usr/bin/perl -w

use strict;

my $lib_dir = "/usr/lib/emacsen-common";
my $invoked_by_old_pkg;
my $context;
my $pkg;

require $lib_dir . "/lib.pl";

umask 0022 or die "emacs-remove: can't set umask, aborting.";

sub usage
{
  my($file_handle) = @_;
  if($invoked_by_old_pkg)
  {
    print $file_handle "Usage: emacs-package-remove FLAVOR\n";
  }
  else
  {
    print $file_handle "Usage: emacs-package-remove --prerm FLAVOR\n";
  }
}

if(scalar(@ARGV) == 1)
{
 $invoked_by_old_pkg = 1;
  $pkg = $ARGV[0];
}
elsif (scalar(@ARGV) == 2 && $ARGV[0] eq '--prerm')
{
  $pkg = $ARGV[1];
}
else
{
  usage(*STDERR{IO});
  exit(1);  
}

# Silence "single use" warning.
$::installed_package_state_dir = $::installed_package_state_dir;

unlink("$::installed_package_state_dir/$pkg");

my $installed_flavors_ref = get_installed_flavors();
my @installed_flavors = @$installed_flavors_ref;
my $script = $lib_dir . "/packages/remove/$pkg";

if(!$invoked_by_old_pkg)
{
  foreach my $flavor (@installed_flavors)
  {
    print "Remove $pkg for $flavor\n";
    ex($script, $flavor) if -e $script;
  }
}
else # $invoked_by_old_pkg
{
  print "Remove $pkg for emacs\n";
  ex($script, 'emacs', @installed_flavors) if -e $script;

  foreach my $flavor (@installed_flavors)
  {
    print "Remove $pkg for $flavor\n";
    ex($script, $flavor, @installed_flavors) if -e $script;
  }
}
