#!/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-2020 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::XS qw(minify);

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

sub main {
	my $inFilename;
	my $outFilename;
	my $inFh = *STDIN;
	my $outFh = *STDOUT;
	my $help = 0;

	# Parse options
	GetOptions('in:s'  => \$inFilename, 'out:s' => \$outFilename,
	  'help!' => \$help);
	# Display usage?
	if ($help) {
		usage;
		exit 1;
	}
	# Use input file or stdin?
	if ($inFilename) {
		open($inFh, "<$inFilename") or die "Can't open '$inFilename': $!";
	}
	# Use output file or stdout?
	if ($outFilename) {
		open($outFh, ">$outFilename") or die "Can't open '$outFilename': $!";
	}
	# Minify javascript code.
	print $outFh minify(do { local $/; <$inFh>; });
	# Close file handles.
	close($inFh);
	close($outFh);

	exit 0;
}

&main;
