docs: def doc(*args):
      '''
      Return the docstrings for all modules. Optionally, specify a module or a
      function to narrow the selection.
  
      The strings are aggregated into a single document on the master for easy
      reading.
  
      Multiple modules/functions can be specified.
  
      CLI Example:
  
      .. code-block:: bash
  
          salt '*' sys.doc
          salt '*' sys.doc sys
          salt '*' sys.doc sys.doc
          salt '*' sys.doc network.traceroute user.info
  
      Modules can be specified as globs.
  
      .. versionadded:: 2015.5.0
  
      .. code-block:: bash
  
          salt '*' sys.doc 'sys.*'
          salt '*' sys.doc 'sys.list_*'
      '''
      docs = {}
      if not args:
          for fun in __salt__:
              docs[fun] = __salt__[fun].__doc__
          return _strip_rst(docs)
  
      for module in args:
          _use_fnmatch = False
          if '*' in module:
              target_mod = module
              _use_fnmatch = True
          elif module:
              # allow both "sys" and "sys." to match sys, without also matching
              # sysctl
              target_mod = module + '.' if not module.endswith('.') else module
          else:
              target_mod = ''
          if _use_fnmatch:
              for fun in fnmatch.filter(__salt__, target_mod):
                  docs[fun] = __salt__[fun].__doc__
          else:
  
              for fun in __salt__:
                  if fun == module or fun.startswith(target_mod):
                      docs[fun] = __salt__[fun].__doc__
      return _strip_rst(docs)