docs: def list_pkgs(versions_as_list=False, **kwargs):
      '''
      List the packages currently installed in a dict::
  
          {'<package_name>': '<version>'}
  
      CLI Example:
  
      .. code-block:: bash
  
          salt '*' pkg.list_pkgs
      '''
      versions_as_list = salt.utils.data.is_true(versions_as_list)
      # not yet implemented or not applicable
      if any([salt.utils.data.is_true(kwargs.get(x))
              for x in ('removed', 'purge_desired')]):
          return {}
  
      if 'pkg.list_pkgs' in __context__:
          if versions_as_list:
              return __context__['pkg.list_pkgs']
          else:
              ret = copy.deepcopy(__context__['pkg.list_pkgs'])
              __salt__['pkg_resource.stringify'](ret)
              return ret
  
      ret = {}
      cmd = 'info --json=v1 --installed'
      package_info = salt.utils.json.loads(_call_brew(cmd)['stdout'])
  
      for package in package_info:
          # Brew allows multiple versions of the same package to be installed.
          # Salt allows for this, so it must be accounted for.
          versions = [v['version'] for v in package['installed']]
          # Brew allows for aliasing of packages, all of which will be
          # installable from a Salt call, so all names must be accounted for.
          names = package['aliases'] + [package['name'], package['full_name']]
          # Create a list of tuples containing all possible combinations of
          # names and versions, because all are valid.
          combinations = [(n, v) for n in names for v in versions]
  
          for name, version in combinations:
              __salt__['pkg_resource.add_pkg'](ret, name, version)
  
      # Grab packages from brew cask, if available.
      # Brew Cask doesn't provide a JSON interface, must be parsed the old way.
      try:
          cask_cmd = 'cask list --versions'
          out = _call_brew(cask_cmd)['stdout']
  
          for line in out.splitlines():
              try:
                  name_and_versions = line.split(' ')
                  name = '/'.join(('caskroom/cask', name_and_versions[0]))
                  installed_versions = name_and_versions[1:]
                  key_func = functools.cmp_to_key(salt.utils.versions.version_cmp)
                  newest_version = sorted(installed_versions, key=key_func).pop()
              except ValueError:
                  continue
              __salt__['pkg_resource.add_pkg'](ret, name, newest_version)
      except CommandExecutionError:
          pass
  
      __salt__['pkg_resource.sort_pkglist'](ret)
      __context__['pkg.list_pkgs'] = copy.deepcopy(ret)
      if not versions_as_list:
          __salt__['pkg_resource.stringify'](ret)
      return ret