docs: def create_parser():
      """Setup argument Parsing."""
      description = """RPC Release Diff Generator
  --------------------------
  
  Finds changes in OpenStack-Ansible, OpenStack-Ansible roles, and OpenStack
  projects between two RPC-OpenStack revisions.
  
  """
  
      parser = argparse.ArgumentParser(
          usage='%(prog)s',
          description=description,
          epilog='Licensed "Apache 2.0"',
          formatter_class=argparse.RawTextHelpFormatter
      )
      parser.add_argument(
          'old_commit',
          action='store',
          nargs=1,
          help="Git SHA of the older commit",
      )
      parser.add_argument(
          'new_commit',
          action='store',
          nargs=1,
          help="Git SHA of the newer commit",
      )
      parser.add_argument(
          '--debug',
          action='store_true',
          default=False,
          help="Enable debug output",
      )
      parser.add_argument(
          '--verbose',
          action='store_true',
          default=False,
          help="Enable verbose output",
      )
      parser.add_argument(
          '-d', '--directory',
          action='store',
          default="~/.osa-differ",
          help="Git repo storage directory (default: ~/.osa-differ)",
      )
      parser.add_argument(
          '-rroc', '--role-requirements-old-commit',
          action='store',
          default=None,
          help=(
              "Name of the Ansible role requirements file to read from the old "
              "commit, defaults to value of `--role-requirements`."
          ),
      )
      parser.add_argument(
          '-rr', '--role-requirements',
          action='store',
          default=ROLE_REQ_FILE,
          help="Name of the ansible role requirements file to read",
      )
      parser.add_argument(
          '-r', '--rpc-repo-url',
          action='store',
          default="https://github.com/rcbops/rpc-openstack",
          help="Github repository for the rpc-openstack project"
      )
      parser.add_argument(
          '--osa-repo-url',
          action='store',
          default="https://git.openstack.org/openstack/openstack-ansible",
          help="URL of the openstack-ansible git repo"
      )
      parser.add_argument(
          '-rpoc', '--rpc-product-old-commit',
          action='store',
          default=None,
          help=(
              "Set the RPC product version for the old commit, defaults to "
              "value of `--rpc-product`."
          )
      )
      parser.add_argument(
          '-rp', '--rpc-product',
          action='store',
          default="master",
          help="Set the RPC product version"
      )
      parser.add_argument(
          '-u', '--update',
          action='store_true',
          default=False,
          help="Fetch latest changes to repo",
      )
      parser.add_argument(
          '--version-mappings',
          action=osa_differ.VersionMappingsAction,
          help=(
              "Map dependency versions in cases where the old version no longer "
              "exists. The argument should be of the form "
              "'repo-name;old-version1:new-version1;old-version2:new-version2'."
          ),
      )
  
      display_opts = parser.add_argument_group("Limit scope")
      display_opts.add_argument(
          "--skip-projects",
          action="store_true",
          help="Skip checking for changes in OpenStack projects"
      )
      display_opts.add_argument(
          "--skip-roles",
          action="store_true",
          help="Skip checking for changes in OpenStack-Ansible roles"
      )
      output_desc = ("Output is printed to stdout by default.")
      output_opts = parser.add_argument_group('Output options', output_desc)
      output_opts.add_argument(
          '--quiet',
          action='store_true',
          default=False,
          help="Do not output to stdout",
      )
      output_opts.add_argument(
          '--gist',
          action='store_true',
          default=False,
          help="Output into a GitHub Gist",
      )
      output_opts.add_argument(
          '--file',
          metavar="FILENAME",
          action='store',
          help="Output to a file",
      )
      return parser