#!/usr/bin/env python

import argparse
import pdfpages
import sys

arg_parser = argparse.ArgumentParser(description="Extract pages from PDF documents")

arg_parser.add_argument("-p", nargs="+", type=int, metavar="num",
                        dest="pages", help="extract specific page numbers")

page_group = arg_parser.add_argument_group("page ranges")

page_group.add_argument("-f", type=int, default=1, metavar="num",
                        dest="first_page", help="extract multiple pages starting from this page number")

page_group.add_argument("-c", type=int, default=1, metavar="count",
		                dest="page_count", help="the number of pages to extract")

page_group.add_argument("-e", nargs="+", default=(), type=int, metavar="num",
                        dest="exclude_pages", help="exclude specific page numbers from the range")

arg_parser.add_argument("-o", required=True, type=argparse.FileType("wb"), metavar="path",
                        dest="out_file", help="the output path")

arg_parser.add_argument(nargs="+", type=argparse.FileType("rb"), metavar="path",
                        dest="in_files", help="the input paths")

args = arg_parser.parse_args()

if args.pages:
    pages = args.pages
else:
    pages = range(args.first_page, args.first_page + args.page_count)

pdfpages.extract(in_files=args.in_files, out_file=args.out_file,
		         pages=pages, exclude_pages=args.exclude_pages)

