#!/usr/bin/perl
#
# This file is part of OpenMediaVault.
#
# @license   http://www.gnu.org/licenses/gpl.html GPL Version 3
# @author    Volker Theile <volker.theile@openmediavault.org>
# @copyright Copyright (c) 2009-2012 Volker Theile
#
# OpenMediaVault is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# any later version.
#
# OpenMediaVault is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenMediaVault. If not, see <http://www.gnu.org/licenses/>.

use strict;
use Getopt::Long;
use File::Basename;
use JavaScript::Minifier qw(minify);

sub usage {
	printf "%s [--in=<file>] [--out=<file>]\n", basename($0);
}

sub main {
	my $infile;
	my $outfile;
	my $help = 0;

	# Parse options
	GetOptions('in:s'  => \$infile, 'out:s' => \$outfile, 'help!' => \$help);
	# Display usage?
	if ($help) {
		usage;
		exit 1;
	}
	# Use input file or stdin?
	if ($infile) {
		open INFILE, "<$infile" or die "Can't open '$infile': $!";
	}
	# Use output file or stdout?
	if ($outfile) {
		open OUTFILE, ">$outfile" or die "Can't open '$outfile': $!";
	}
	# Minify javascript code.
	minify(input => $infile ? *INFILE : *STDIN, outfile => $outfile ?
	  *OUTFILE : *STDOUT);
	# Close file handles.
	if ($infile) {
		close INFILE;
	}
	if ($outfile) {
		close OUTFILE;
	}
	exit 0;
}

&main;
