#!/usr/bin/env perl
my $version_banner = <<END;
psresize 1.90
Copyright (c) Reuben Thomas 2016
Released under the GPL version 3, or (at your option) any later version.
END

use warnings;
use strict;

use File::Basename;
use Getopt::Long;

my $prog = basename($0);
my ($help_flag, $version_flag);

sub usage {
  my ($exit_code) = @_;
  print STDERR <<END;
$prog [OPTION...] [INFILE [OUTFILE]]
Alter page size of a PostScript file.

  --paper=PAPER        output paper size
  --inpaper=PAPER      input paper size
  --quiet              don't show page numbers being output
  --help               display this help and exit
  --version            display version information and exit
END
  exit $exit_code;
}

# Get arguments
Getopt::Long::Configure("bundling");
# Having configured bundling, must give short option names explicitly
my @psnup_args = ();
GetOptions(
  "paper|p=s" => sub { push @psnup_args, "-p", $_[1]; },
  "inpaper|P=s" => sub { push @psnup_args, "-P", $_[1]; },
  "width|w=s" => sub { push @psnup_args, "-w", $_[1]; },
  "height|h=s" => sub { push @psnup_args, "-W", $_[1]; },
  "inwidth|W=s" => sub { push @psnup_args, "-h", $_[1]; },
  "inheight|I=s" => sub { push @psnup_args, "-W", $_[1]; },
  "quiet|q" => sub { push @psnup_args, "-q"; },
  "help" => \$help_flag,
  "version" => \$version_flag,
 ) or usage(1);
if ($version_flag) {
  print STDERR $version_banner;
  exit 0;
}
usage(0) if $help_flag;

# Resize pages
exec("psnup", "-1", @psnup_args, @ARGV) or die("error running pstops");
