'Available options and tool name are read from the usage.
Tool name is got from the first row of the usage. It is either the
whole row or anything before first \' -- \'.'

def __init__(self, usage, name=None, version=None, arg_limits=None, validator=None, env_options=None, auto_help=True, auto_version=True, auto_escape=True, auto_pythonpath=True, auto_argumentfile=True):

    if (not usage):
        raise FrameworkError('Usage    cannot    be    empty')
    self.name = (name or usage.splitlines()[0].split('    --    ')[0].strip())
    self.version = (version or get_full_version())
    self._usage = usage
    self._arg_limit_validator = ArgLimitValidator(arg_limits)
    self._validator = validator
    self._auto_help = auto_help
    self._auto_version = auto_version
    self._auto_escape = auto_escape
    self._auto_pythonpath = auto_pythonpath
    self._auto_argumentfile = auto_argumentfile
    self._env_options = env_options
    self._short_opts = ''
    self._long_opts = []
    self._multi_opts = []
    self._flag_opts = []
    self._short_to_long = {}
    self._expected_args = ()
    self._create_options(usage)
