aboutsummaryrefslogtreecommitdiff
blob: e5acf367068555186d91c81f6d924e40d747dcb0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#autoload

# Usage:
#   _gentoo_repos    -> returns the list of all repos
#   _gentoo_repos -m -> returns the main repo
#   _gentoo_repos -o -> returns the list of non-main repos

_gentoo_repos() {
  local main_repo main_repo_path overlay overlay_paths result

  overlay_paths=();
  result=();

  if [[ -e ${EPREFIX}/usr/share/portage/config/repos.conf || -e ${EPREFIX}/etc/portage/repos.conf ]]; then
    main_repo=$(_gentoo_repos_conf DEFAULT main-repo)
    main_repo_path=$(_gentoo_repos_conf ${main_repo} location)

    for overlay in $(_gentoo_repos_conf -l); do
      overlay_paths+=($(_gentoo_repos_conf ${overlay} location))
    done

    source ${EPREFIX}/etc/make.conf 2>/dev/null
    source ${EPREFIX}/etc/portage/make.conf 2>/dev/null

    overlay_paths+=(${(@)PORTDIR_OVERLAY})
  else
    source ${EPREFIX}/usr/share/portage/config/make.globals 2>/dev/null
    source ${EPREFIX}/etc/make.conf 2>/dev/null
    source ${EPREFIX}/etc/portage/make.conf 2>/dev/null

    main_repo_path="${PORTDIR}"
    overlay_paths=(${(@)PORTDIR_OVERLAY})
  fi

  if [[ $1 == "-m" ]]; then
    result+=(${main_repo_path})
  elif [[ $1 == "-o" ]]; then
    result+=(${(@)overlay_paths})
  else
    result+=(${main_repo_path} ${(@)overlay_paths})
  fi

  echo ${(u)result}
}

_gentoo_repos "$@"

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