aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Neumärker <xdch47@posteo.de>2019-02-20 21:18:05 +0100
committerVadim Misbakh-Soloviov <mva@gentoo.org>2020-02-20 01:47:24 +0700
commit4560ce6d6f93ebd5823723284708aa16ee7cc37c (patch)
treeb28cb35bf75c3ed9e85a90aaa36005fecc0dcb36 /src/_gentoo_repos_conf
parent_portage: add configure and prepare,test completions (diff)
downloadzsh-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_conf55
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: