#!/usr/bin/perl
#
# Zips all the files of specified type into ZIP files
#


my $ZIPCMD = "";
my $ZIPEXT = "";
my $FILETYPE = $ARGV[0];
my $ZIPFORMAT = $ARGV[1];
my $REMOVE_ORIG = "";
my $VERSION = "1.1";

print "zipup v$VERSION\n";
print "===========\n";
if ($ARGV[2] eq "remove")
{
	$REMOVE_ORIG = "TRUE";
}

if ($FILETYPE eq "")
{
	print("Usage:\nzipup \<FILE TYPE\> \<COMPRESSION TYPE\> \[remove\]\n");
	print("COMPRESSION TYPE: zip | 7z | ciso\n");
	print("remove: delete the original file after compression\n");
	exit 1;
}
print ("Processing file type = $FILETYPE\n");

if ($ZIPFORMAT eq "zip")
{
	$ZIPCMD = "/usr/bin/zip -9";
	$ZIPEXT = "zip";
	print ("Compressing with ZIP\n");
}
elsif ($ZIPFORMAT eq "7z")
{
	$ZIPCMD = "/usr/bin/7z a";
	$ZIPEXT = "7z";
	print ("Compressing with 7ZIP\n");
}
elsif ($ZIPFORMAT eq "ciso")
{
	$ZIPCMD = "/usr/bin/ciso 9";
	$ZIPEXT = "cso";
	print ("Compressing with ciso\n");
}
else
{
	print("You must specify a compression format:\nzip\n7z\nciso\n");
	exit (1);
}

if ($REMOVE_ORIG ne "")
{
	print("Deleting source after compression\n");
}

my $TYPELEN = length($FILETYPE);

my $dirname = '.';
opendir(DIR, $dirname) or die "Could not open the directory $dirname\n";

while (my $filename = readdir(DIR))
{
#	print "$filename\n";
	if (substr($filename, -$TYPELEN) eq $FILETYPE)
	{
		print "File $filename matched\n";
		if ($ZIPFORMAT eq "ciso")
		{
			system("$ZIPCMD \"$filename\" \"$filename.$ZIPEXT\"");
			if ($REMOVE_ORIG ne "")
			{
				print "Deleting original $FILETYPE file...\n";
				unlink($filename);
			}
		}
		else
		{
			system("$ZIPCMD \"$filename.$ZIPEXT\" \"$filename\"");
			if ($REMOVE_ORIG ne "")
			{
				print "Deleting original $FILETYPE file...\n";
				unlink($filename);
			}
		}
	}
}

closedir(DIR);

exit 0;
