in releasedocmaker/src/main/python/releasedocmaker/__init__.py [0:0]
def parse_args(): # pylint: disable=too-many-branches
"""Parse command-line arguments with optparse."""
parser = ArgumentParser(
prog='releasedocmaker',
epilog="--project and --version may be given multiple times.")
parser.add_argument("--dirversions",
dest="versiondirs",
action="store_true",
default=False,
help="Put files in versioned directories")
parser.add_argument("--empty",
dest="empty",
action="store_true",
default=False,
help="Create empty files when no issues")
parser.add_argument(
"--extension",
dest="extension",
default=EXTENSION,
type=str,
help="Set the file extension of created Markdown files")
parser.add_argument("--fileversions",
dest="versionfiles",
action="store_true",
default=False,
help="Write files with embedded versions")
parser.add_argument("-i",
"--index",
dest="index",
action="store_true",
default=False,
help="build an index file")
parser.add_argument("-l",
"--license",
dest="license",
action="store_true",
default=False,
help="Add an ASF license")
parser.add_argument("-p",
"--project",
dest="projects",
action="append",
type=str,
help="projects in JIRA to include in releasenotes",
metavar="PROJECT")
parser.add_argument("--prettyindex",
dest="prettyindex",
action="store_true",
default=False,
help="build an index file with pretty URLs")
parser.add_argument("-r",
"--range",
dest="range",
action="store_true",
default=False,
help="Given versions are a range")
parser.add_argument(
"--sortorder",
dest="sortorder",
metavar="TYPE",
default=SORTORDER,
# dec is supported for backward compatibility
choices=["asc", "dec", "desc", "newer", "older"],
help=f"Sorting order for sort type (default: {SORTORDER})")
parser.add_argument("--sorttype",
dest="sorttype",
metavar="TYPE",
default=SORTTYPE,
choices=["resolutiondate", "issueid"],
help=f"Sorting type for issues (default: {SORTTYPE})")
parser.add_argument(
"-t",
"--projecttitle",
dest="title",
type=str,
help="Title to use for the project (default is Apache PROJECT)")
parser.add_argument("-u",
"--usetoday",
dest="usetoday",
action="store_true",
default=False,
help="use current date for unreleased versions")
parser.add_argument("-v",
"--version",
dest="versions",
action="append",
type=str,
help="versions in JIRA to include in releasenotes",
metavar="VERSION")
parser.add_argument(
"-V",
dest="release_version",
action="store_true",
default=False,
help="display version information for releasedocmaker and exit.")
parser.add_argument(
"-O",
"--outputdir",
dest="output_directory",
action="append",
type=str,
help="specify output directory to put release docs to.")
parser.add_argument("-B",
"--baseurl",
dest="base_url",
action="append",
type=str,
default='https://issues.apache.org/jira',
help="specify base URL of the JIRA instance.")
parser.add_argument(
"--retries",
dest="retries",
action="append",
type=int,
help="Specify how many times to retry connection for each URL.")
parser.add_argument(
"--skip-credits",
dest="skip_credits",
action="store_true",
default=False,
help=
"While creating release notes skip the 'reporter' and 'contributor' columns"
)
parser.add_argument(
"-X",
"--incompatiblelabel",
dest="incompatible_label",
default="backward-incompatible",
type=str,
help="Specify the label to indicate backward incompatibility.")
Linter.add_parser_options(parser)
if len(sys.argv) <= 1:
parser.print_help()
sys.exit(1)
options = parser.parse_args()
# Handle the version string right away and exit
if options.release_version:
logging.info(getversion())
sys.exit(0)
# Validate options
if not options.release_version:
if options.versions is None:
parser.error("At least one version needs to be supplied")
if options.projects is None:
parser.error("At least one project needs to be supplied")
if options.base_url is None:
parser.error("Base URL must be defined")
if options.output_directory is not None:
if len(options.output_directory) > 1:
parser.error("Only one output directory should be given")
else:
options.output_directory = options.output_directory[0]
if options.range or len(options.versions) > 1:
if not options.versiondirs and not options.versionfiles:
parser.error(
"Multiple versions require either --fileversions or --dirversions"
)
return options