diff options
author | V3n3RiX <venerix@koprulu.sector> | 2022-06-29 12:04:12 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2022-06-29 12:04:12 +0100 |
commit | 0f558761aa2dee1017b4751e4017205e015a9560 (patch) | |
tree | 037df795519468a25d9362b4e95cdaeb84eb1cf9 /eclass/vim-doc.eclass | |
parent | 752d6256e5204b958b0ef7905675a940b5e9172f (diff) |
gentoo resync : 29.12.2022
Diffstat (limited to 'eclass/vim-doc.eclass')
-rw-r--r-- | eclass/vim-doc.eclass | 72 |
1 files changed, 45 insertions, 27 deletions
diff --git a/eclass/vim-doc.eclass b/eclass/vim-doc.eclass index ba9d00f4f5e8..119ce793071d 100644 --- a/eclass/vim-doc.eclass +++ b/eclass/vim-doc.eclass @@ -1,10 +1,10 @@ -# Copyright 1999-2021 Gentoo Authors +# Copyright 1999-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # @ECLASS: vim-doc.eclass # @MAINTAINER: # vim@gentoo.org -# @SUPPORTED_EAPIS: 6 7 +# @SUPPORTED_EAPIS: 6 7 8 # @BLURB: Eclass for vim{,-plugin}.eclass to update documentation tags. # @DESCRIPTION: # This eclass is used by vim.eclass and vim-plugin.eclass to update @@ -16,26 +16,31 @@ # DEPEND in vim-plugin or by whatever version of vim is being # installed by the eclass. -case ${EAPI:-0} in - [67]) ;; +case ${EAPI} in + 6|7|8) ;; *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;; esac -if [[ -z ${_VIM_DOC_ECLASS} ]] ; then -_VIM_DOC_ECLASS=1 +if [[ ! ${_VIM_DOC_ECLASS} ]] ; then +# @FUNCTION: update_vim_helptags +# @USAGE: +# @DESCRIPTION: +# Update the documentation tags in the versioned Vim directory. update_vim_helptags() { - local vimfiles vim d s + debug-print-function ${FUNCNAME} "${@}" + + local vimfiles helpfile files vim d # This is where vim plugins are installed vimfiles="${EROOT}"/usr/share/vim/vimfiles - if [[ $PN != vim-core ]]; then + if [[ ${PN} != vim-core ]]; then # Find a suitable vim binary for updating tags :helptags vim=$(type -P vim 2>/dev/null) - [[ -z "$vim" ]] && vim=$(type -P gvim 2>/dev/null) - [[ -z "$vim" ]] && vim=$(type -P kvim 2>/dev/null) - if [[ -z "$vim" ]]; then + [[ -z "${vim}" ]] && vim=$(type -P gvim 2>/dev/null) + [[ -z "${vim}" ]] && vim=$(type -P kvim 2>/dev/null) + if [[ -z "${vim}" ]]; then ewarn "No suitable vim binary to rebuild documentation tags" fi fi @@ -43,44 +48,57 @@ update_vim_helptags() { # Make vim not try to connect to X. See :help gui-x11-start # in vim for how this evil trickery works. if [[ -n "${vim}" ]] ; then - ln -s "${vim}" "${T}/tagvim" + ln -s "${vim}" "${T}/tagvim" || die vim="${T}/tagvim" fi # Install the documentation symlinks into the versioned vim # directory and run :helptags for d in "${EROOT%/}"/usr/share/vim/vim[0-9]*; do - [[ -d "$d/doc" ]] || continue # catch a failed glob + [[ -d "${d}/doc" ]] || continue # catch a failed glob - # Remove links, and possibly remove stale dirs - find $d/doc -name \*.txt -type l | while read s; do - [[ $(readlink "$s") = $vimfiles/* ]] && rm -f "$s" + # Remove links + readarray -d '' files < <(find "${d}"/doc -name "*.txt" -type l -print0 || die "cannot traverse ${d}/doc" ) + for helpfile in "${files[@]}"; do + if [[ $(readlink -f "${helpfile}") == "${vimfiles}"/* ]]; then + rm "${helpfile}" || die + fi done - if [[ -f "$d/doc/tags" && $(find "$d" | wc -l | tr -d ' ') = 3 ]]; then + + # Remove stale dirs, if possible + readarray -d '' files < <(find "${d}" -print0 || die "cannot traverse ${d}") + if [[ -f "${d}/doc/tags" && ${#files[@]} -eq 3 ]]; then # /usr/share/vim/vim61 # /usr/share/vim/vim61/doc # /usr/share/vim/vim61/doc/tags - einfo "Removing $d" - rm -r "$d" + einfo "Removing ${d}" + rm -r "${d}" || die continue fi # Re-create / install new links - if [[ -d $vimfiles/doc ]]; then - ln -s $vimfiles/doc/*.txt $d/doc 2>/dev/null + if [[ -d "${vimfiles}"/doc ]]; then + for helpfile in "${vimfiles}"/doc/*.txt; do + if [[ ! -e "${d}/doc/$(basename "${helpfile}")" ]]; then + ln -s "${helpfile}" "${d}/doc" || die + fi + done fi # Update tags; need a vim binary for this - if [[ -n "$vim" ]]; then - einfo "Updating documentation tags in $d" - DISPLAY= $vim -u NONE -U NONE -T xterm -X -n -f \ + if [[ -n "${vim}" ]]; then + einfo "Updating documentation tags in ${d}" + DISPLAY= "${vim}" -u NONE -U NONE -T xterm -X -n -f \ '+set nobackup nomore' \ - "+helptags $d/doc" \ - '+qa!' </dev/null &>/dev/null + "+helptags ${d}/doc" \ + '+qa!' </dev/null &>/dev/null || die fi done - [[ -n "${vim}" && -f "${vim}" ]] && rm "${vim}" + if [[ -n "${vim}" && -f "${vim}" ]]; then + rm "${vim}" || die + fi } +_VIM_DOC_ECLASS=1 fi |