#autoload

# Usage:
#   _gentoo_repos_conf -l             -> returns the list of all repos names
#   _gentoo_repos_conf REPO ATTRIBUTE -> returns the VALUE associated 
#                                        with the ATTRIBUTE of the REPO

_gentoo_repos_conf() {
  local v file insection section arr secname

  secname=();


  for file in ${EPREFIX}/usr/share/portage/config/repos.conf \
           ${EPREFIX}/etc/portage/repos.conf \
           ${EPREFIX}/etc/portage/repos.conf/*.conf; do

    [[ -f ${file} ]] || continue
    insection=0
    declare -A arr
    IFS='= '

    while read -r name value; do
      [[ -z ${name} || ${name} == '#'* ]] && continue

      if [[ (${name} == '['*']') && (-z ${value}) ]]; then
        value=${name//(\]|\[)}
        name="section"
      fi
      arr[${name}]=${value}

      if [[ ${insection} == 1 && ${name} == "section" ]]; then
        break
      elif [[ ${name} == "section" ]]; then
        [[ ${value} == ${1} ]] && insection=1
        secname+=(${value})
      elif [[ ${insection} == 1 ]]; then
        if [[ ${name} == ${2} ]]; then
          v=${value}
        fi
      fi
      continue
    done < ${file}
  done

  if [[ ${1} == "-l" ]]; then
    echo "${(@u)secname}"
  else
    echo "${v}"
  fi
}

_gentoo_repos_conf "$@"

# vim: set et sw=2 ts=2 ft=zsh:
