diff options
author | Tim Harder <radhermit@gentoo.org> | 2014-12-19 17:47:00 -0800 |
---|---|---|
committer | Tim Harder <radhermit@gentoo.org> | 2014-12-19 17:47:55 -0800 |
commit | 6a8e0ecd0c8ff254df250bd2f6f8dd4166795219 (patch) | |
tree | 2171a2eef59a6a64e01090e390b4fb4512de472d /src | |
parent | _gentoo_packages: replace backtick usage with $() (diff) | |
download | zsh-completion-6a8e0ecd0c8ff254df250bd2f6f8dd4166795219.tar.gz zsh-completion-6a8e0ecd0c8ff254df250bd2f6f8dd4166795219.tar.bz2 zsh-completion-6a8e0ecd0c8ff254df250bd2f6f8dd4166795219.zip |
move duplicated repos functionality to _gentoo_repos
For dependent scripts, it only requires renaming `_portdir` calls to use
`_gentoo_repos` instead, optional arguments (-o) remain the same for
now.
Diffstat (limited to 'src')
-rw-r--r-- | src/_gentoo_packages | 90 | ||||
-rw-r--r-- | src/_gentoo_repos | 85 | ||||
-rw-r--r-- | src/_portage_utils | 78 |
3 files changed, 93 insertions, 160 deletions
diff --git a/src/_gentoo_packages b/src/_gentoo_packages index e96eac8..ab21f33 100644 --- a/src/_gentoo_packages +++ b/src/_gentoo_packages @@ -6,82 +6,6 @@ setopt extendedglob bareglobqual # inspired by _deb_packages #Usage: _gentoo_packages installed|available|installed_versions|available_versions|binary|category|useflag -_portdir() { - local mainreponame mainrepopath overlayname overlaypath - - if [[ -e /usr/share/portage/config/repos.conf ]]; then - if [[ ${1} == "-o" ]]; then - for overlayname in $(_parsereposconf -l); do - overlaypath+=($(_parsereposconf ${overlayname} location)) - done - - source /etc/make.conf 2>/dev/null - source /etc/portage/make.conf 2>/dev/null - - overlaypath+=(${(@)PORTDIR_OVERLAY}) - - echo "${(@u)overlaypath}" - else - mainreponame=$(_parsereposconf DEFAULT main-repo) - mainrepopath=$(_parsereposconf ${mainreponame} location) - - echo "${mainrepopath}" - fi - else - source /usr/share/portage/config/make.globals 2>/dev/null - source /etc/make.conf 2>/dev/null - source /etc/portage/make.conf 2>/dev/null - - if [[ ${1} == "-o" ]]; then - echo "${(@u)PORTDIR_OVERLAY}" - else - echo "${PORTDIR}" - fi - fi -} - -_parsereposconf() { - local v f insection section arr - - for f in /usr/share/portage/config/repos.conf \ - /etc/portage/repos.conf \ - /etc/portage/repos.conf/*.conf; do - - [[ -f ${f} ]] || 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 < ${f} - done - - if [[ ${1} == "-l" ]]; then - echo "${(@)secname}" - else - echo "${v}" - fi -} - _parsesetsconf() { [[ -d ${1} ]] || continue @@ -141,7 +65,7 @@ _gentoo_packages_update_installed_sets() { } _gentoo_packages_update_available_sets() { - trees=($(_portdir -o) /etc/portage /usr/share/portage/config) + trees=($(_gentoo_repos -o) /etc/portage /usr/share/portage/config) for PORTDIR in ${(@)trees}; do if [[ -d ${PORTDIR} ]]; then setsdir="$(_parsesetsconf ${PORTDIR})" @@ -165,7 +89,7 @@ _gentoo_packages_update_useflag(){ local flags trees flags=() - trees=($(_portdir) $(_portdir -o)) + trees=($(_gentoo_repos) $(_gentoo_repos -o)) for PORTDIR in ${trees[@]}; do [[ -r ${PORTDIR}/profiles/use.desc ]] && @@ -190,7 +114,7 @@ _gentoo_packages_update_active_useflag(){ _gentoo_packages_update_category(){ local trees category - trees=($(_portdir) $(_portdir -o)) + trees=($(_gentoo_repos) $(_gentoo_repos -o)) category=( $trees/*-*(/:t) ) _wanted cat_packages expl 'category' compadd "$@" $category } @@ -220,7 +144,7 @@ _gentoo_packages_update_installed_versions(){ _gentoo_packages_update_available_pkgnames_only(){ local trees packages - trees=($(_portdir) $(_portdir -o)) + trees=($(_gentoo_repos) $(_gentoo_repos -o)) packages=($trees/*-*/*(:t)) _wanted packages expl 'package' compadd - "${(@)packages}" @@ -229,7 +153,7 @@ _gentoo_packages_update_available_pkgnames_only(){ _gentoo_packages_update_available(){ local trees category packages pkg expl - trees=($(_portdir) $(_portdir -o)) + trees=($(_gentoo_repos) $(_gentoo_repos -o)) category=($trees/*-*(/:t)) packages=($trees/*-*/*(:t)) @@ -251,8 +175,8 @@ _gentoo_packages_update_available(){ _gentoo_packages_update_available_versions(){ local var overlay_ebuilds portage_ebuilds expl trees category - PORTDIR=$(_portdir) - PORTDIR_OVERLAY=$(_portdir -o) + PORTDIR=$(_gentoo_repos) + PORTDIR_OVERLAY=$(_gentoo_repos -o) trees=($PORTDIR $=PORTDIR_OVERLAY) category=($trees/*-*(/:t)) diff --git a/src/_gentoo_repos b/src/_gentoo_repos new file mode 100644 index 0000000..27e98dd --- /dev/null +++ b/src/_gentoo_repos @@ -0,0 +1,85 @@ +#autoload + +# Usage: +# _gentoo_repos -> returns the main repo (with PORTDIR fallback) +# _gentoo_repos -o -> returns the list of non-main repos (with PORTDIR_OVERLAY fallback) + +_gentoo_repos() { + local mainreponame mainrepopath overlayname overlaypath + + if [[ -e /usr/share/portage/config/repos.conf ]]; then + if [[ ${1} == "-o" ]]; then + for overlayname in $(_parsereposconf -l); do + overlaypath+=($(_parsereposconf ${overlayname} location)) + done + + source /etc/make.conf 2>/dev/null + source /etc/portage/make.conf 2>/dev/null + + overlaypath+=(${(@)PORTDIR_OVERLAY}) + + echo "${(@u)overlaypath}" + else + mainreponame=$(_parsereposconf DEFAULT main-repo) + mainrepopath=$(_parsereposconf ${mainreponame} location) + + echo "${mainrepopath}" + fi + else + source /usr/share/portage/config/make.globals 2>/dev/null + source /etc/make.conf 2>/dev/null + source /etc/portage/make.conf 2>/dev/null + + if [[ ${1} == "-o" ]]; then + echo "${(@u)PORTDIR_OVERLAY}" + else + echo "${PORTDIR}" + fi + fi +} + +_parsereposconf() { + local v f insection section arr + + for f in /usr/share/portage/config/repos.conf \ + /etc/portage/repos.conf \ + /etc/portage/repos.conf/*.conf; do + + [[ -f ${f} ]] || 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 < ${f} + done + + if [[ ${1} == "-l" ]]; then + echo "${(@)secname}" + else + echo "${v}" + fi +} + +_gentoo_repos "$@" + +# vim: set et sw=2 sts=2 ts=2 ft=zsh: diff --git a/src/_portage_utils b/src/_portage_utils index 95811c8..962cc62 100644 --- a/src/_portage_utils +++ b/src/_portage_utils @@ -2,85 +2,9 @@ # portage-utils-0.53 -_portdir() { - local mainreponame mainrepopath overlayname overlaypath - - if [[ -e /usr/share/portage/config/repos.conf ]]; then - if [[ ${1} == "-o" ]]; then - for overlayname in $(_parsereposconf -l); do - overlaypath+=($(_parsereposconf ${overlayname} location)) - done - - source /etc/make.conf 2>/dev/null - source /etc/portage/make.conf 2>/dev/null - - overlaypath+=(${(@)PORTDIR_OVERLAY}) - - echo "${(@u)overlaypath}" - else - mainreponame=$(_parsereposconf DEFAULT main-repo) - mainrepopath=$(_parsereposconf ${mainreponame} location) - - echo "${mainrepopath}" - fi - else - source /usr/share/portage/config/make.globals 2>/dev/null - source /etc/make.conf 2>/dev/null - source /etc/portage/make.conf 2>/dev/null - - if [[ ${1} == "-o" ]]; then - echo "${(@u)PORTDIR_OVERLAY}" - else - echo "${PORTDIR}" - fi - fi -} - -_parsereposconf() { - local v f insection section arr - - for f in /usr/share/portage/config/repos.conf \ - /etc/portage/repos.conf \ - /etc/portage/repos.conf/*.conf; do - - [[ -f ${f} ]] || 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 < ${f} - done - - if [[ ${1} == "-l" ]]; then - echo "${(@)secname}" - else - echo "${v}" - fi -} - local common_args PORTDIR -PORTDIR="$(_portdir)" +PORTDIR="$(_gentoo_repos)" common_args=( '--root[Set the ROOT env var]:root directory:_files -/' \ |