diff options
author | Felix Neumärker <xdch47@posteo.de> | 2019-02-20 21:18:05 +0100 |
---|---|---|
committer | Vadim Misbakh-Soloviov <mva@gentoo.org> | 2020-02-20 01:47:24 +0700 |
commit | 4560ce6d6f93ebd5823723284708aa16ee7cc37c (patch) | |
tree | b28cb35bf75c3ed9e85a90aaa36005fecc0dcb36 /src/_gentoo_repos_conf | |
parent | _portage: add configure and prepare,test completions (diff) | |
download | zsh-completion-4560ce6d6f93ebd5823723284708aa16ee7cc37c.tar.gz zsh-completion-4560ce6d6f93ebd5823723284708aa16ee7cc37c.tar.bz2 zsh-completion-4560ce6d6f93ebd5823723284708aa16ee7cc37c.zip |
Merge Pull Request #18 (squashed)
[PATCH 1/6] _gentoo_repos: split functions into 2 files
[PATCH 2/6] _portage: improve completion for ebuild and emaint
[PATCH 3/6] _eselect: rewrite for more generic completion
[PATCH 4/6] add EPREFIX support
[PATCH 5/6] _eselect: multi_parts timezone completion
[PATCH 6/6] _eselect: set/enable filter for lists > 10
Signed-off-by: Vadim Misbakh-Soloviov <mva@gentoo.org>
Diffstat (limited to 'src/_gentoo_repos_conf')
-rw-r--r-- | src/_gentoo_repos_conf | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/_gentoo_repos_conf b/src/_gentoo_repos_conf new file mode 100644 index 0000000..3dad709 --- /dev/null +++ b/src/_gentoo_repos_conf @@ -0,0 +1,55 @@ +#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: |