Create an `argparse.ArgumentParser` and parse command line arguments.

def parse_args():
    """Create an `argparse.ArgumentParser` and parse command line arguments.
    """
    parser = ArgumentParser(
        description="Create a landing website for for PDF documentation.",
        epilog="lander is a product of LSST Data Management. Code is "
               "available at https://github.com/lsst-sqre/lander.")

    parser.add_argument(
        '--version',
        dest='show_version',
        default=False,
        action='store_true',
        help="Show version information and exit.")

    parser.add_argument(
        '--verbose',
        default=False,
        action='store_true',
        help='Show debugging information.')

    parser.add_argument(
        '--build-dir',
        dest='build_dir',
        default=os.path.abspath('_build'),
        help='Build directory (scratch space).')

    parser.add_argument(
        '--pdf',
        dest='pdf_path',
        help='Filepath of PDF document.'
    )

    parser.add_argument(
        '--lsstdoc',
        dest='lsstdoc_tex_path',
        help='File path of a lsstdoc LaTeX file (for metadata).'
    )

    parser.add_argument(
        '--env',
        dest='environment',
        choices=['travis'],
        default=None,
        help='Environment for auto-configuration'
    )

    parser.add_argument(
        '--title',
        dest='title',
        help='Document title (metadata override)'
    )

    parser.add_argument(
        '--authors',
        dest='authors_json',
        help='Author list, as a JSON array of strings (metadata override).'
    )

    parser.add_argument(
        '--abstract',
        dest='abstract',
        help='Document abstract (metadata override).'
    )

    parser.add_argument(
        '--handle',
        dest='doc_handle',
        help='Document handle, such as LDM-000 (metadata override).'
    )

    parser.add_argument(
        '--repo-url',
        dest='repo_url',
        help='Git repository URL (metadata override).'
    )

    parser.add_argument(
        '--repo-branch',
        dest='repo_branch',
        help='Git repository branch name (metadata override).'
    )

    parser.add_argument(
        '--date',
        dest='build_datetime',
        help='Datetime string describing when the document was authored '
             '(metadata override; the current datetime is used by default).'
    )

    parser.add_argument(
        '--extra-downloads',
        dest='extra_downloads',
        nargs='*',
        help='Paths of additional files to provide '
             'download links for from the landing page. '
             'These files will be copied into the root deployment directory. '
             'The main PDF (--pdf) should not be included in this list.'
    )

    parser.add_argument(
        '--docushare-url',
        dest='docushare_url',
        help='Docushare URL. Prefer the landing page URL in docushare rather '
             'than the direct PDF link so that users can see metadata about '
             'the accepted version. Using ls.st, this is the '
             'https://ls.st/ldm-nnn* URL.'
    )

    parser.add_argument(
        '--ltd-product',
        dest='ltd_product',
        help='Product name on LSST the Docs, such as `ldm-000` '
             '(metadata override).'
    )

    parser.add_argument(
        '--keeper-url',
        dest='keeper_url',
        help='LTD Keeper API URL (or $LTD_KEEPER_URL)'
    )

    parser.add_argument(
        '--keeper-user',
        dest='keeper_user',
        help='LTD Keeper API username (or $LTD_KEEPER_USER)'
    )

    parser.add_argument(
        '--keeper-password',
        dest='keeper_password',
        help='LTD Keeper API password (or $LTD_KEEPER_PASSWORD)'
    )

    parser.add_argument(
        '--aws-id',
        dest='aws_id',
        help='AWS key ID (or $LTD_AWS_ID)'
    )

    parser.add_argument(
        '--aws-secret',
        dest='aws_secret',
        help='AWS secret key (or $LTD_AWS_SECRET)'
    )

    parser.add_argument(
        '--upload',
        dest='upload',
        default=False,
        action='store_true',
        help='Upload built documentation to LSST the Docs'
    )

    return parser.parse_args()