docs: def get_cli_parser(func, skip_first=0, parser=None):
      """makes a parser for parsing cli arguments for `func`.
  
      :param callable func: the function the parser will parse
      :param int skip_first: skip this many first arguments of the func
      :param ArgumentParser parser: bind func to this parser.
      """
      help_msg, func_args = _get_func_args(func)
      if not parser:
          parser = ArgumentParser(description=help_msg)
  
      for i, arg in enumerate(func_args):
          arg_name, arg_type, arg_default, arg_required, arg_help = arg
          if i < skip_first:
              continue
  
          if arg_default is not _empty:
              parser.add_argument(
                  arg_name, type=arg_type, default=arg_default,
                  required=arg_required, help=arg_help
              )
          else:
              parser.add_argument(
                  arg_name, type=arg_type, required=arg_required, help=arg_help
              )
      return parser