#!/usr/bin/perl
# cpanel - cleanup_dead_package_limits            Copyright(c) 2009 cPanel, Inc.
#                                                           All rights Reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited

BEGIN { unshift @INC, '/usr/local/cpanel'; }

use Whostmgr::Limits                ();
use Whostmgr::Limits::PackageLimits ();

my $time = time();

system 'cp', '-p', '/var/cpanel/package-limits.yaml', '/var/cpanel/package-limits.yaml.pre_cleanup.' . $time;

my $package_limits = Whostmgr::Limits::PackageLimits->load(1);

## Keeping this autofixer temporarily, even though this refactoring and its use of ::PackageLimits.pm
##   makes it cPanel version specific. The $package_limits->cleanup function is called in other
##   places in the codebase, rendering this autofixer less important.

my @removed_limits;
my $ar_pkg_names = $package_limits->list_packages();

# Drop empty package limits that do not have a package
foreach my $pkg_name (@$ar_pkg_names) {
    my $removed = $package_limits->cleanup_package($pkg_name);
    push( @removed_limits, $pkg_name ) if $removed;
}

$package_limits->save();

if (@removed_limits) {
    my $count = scalar @removed_limits;
    print "Removed the following ($count) unused package limits definitions:\n";
    foreach my $removed (@removed_limits) {
        print "$removed\n";
    }
    print "Original package limits definition saved to:\n";
    print '/var/cpanel/package-limits.yaml.pre_cleanup.' . $time . "\n";
    print "This file may be removed at your discretion.\n";
}
else {
    print "No unused package limits specifications located.\n";
    unlink '/var/cpanel/package-limits.yaml.pre_cleanup.' . $time;
}
