summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEthan Sommer <e5ten.arch@gmail.com>2019-09-19 15:29:15 -0400
committerEthan Sommer <e5ten.arch@gmail.com>2019-09-19 15:29:15 -0400
commit299f8e5828bd7e86428d58c6ce5ea11cc7dff575 (patch)
treef418b67a88d658c7f41cb871e34e85d892281847
parentb3c9fb8f01ad389624772a4ed1ee41f71ce1969b (diff)
improved auracle info caching, improve option parsing by removing the if statement at the start of the loop, enable nounset, lots and lots of hopefully NFC
-rw-r--r--Makefile7
-rwxr-xr-xpacaur1248
-rw-r--r--po/ca.po260
-rw-r--r--po/da.po262
4 files changed, 801 insertions, 976 deletions
diff --git a/Makefile b/Makefile
index 788579f..fc4eae3 100644
--- a/Makefile
+++ b/Makefile
@@ -11,6 +11,7 @@ DATAROOTDIR = $(PREFIX)/share
DOCDIR = $(DATAROOTDIR)/doc/pacaur
MANPREFIX = $(DATAROOTDIR)/man
MSGFMT = $(shell command -v msgfmt 2>/dev/null)
+POD2MAN = $(shell command -v pod2man 2>/dev/null)
TRANSLATIONS = \
ca \
@@ -39,16 +40,20 @@ all: doc
# documentation
doc:
+ifneq ($(POD2MAN),)
@echo "Generating documentation..."
@pod2man --utf8 --section=8 --center="Pacaur Manual" --name="PACAUR" \
--release="pacaur $(VERSION)" ./README.pod ./pacaur.8
+endif
# aux
install: doc
@echo "Installing..."
@install -Dm644 ./config $(DESTDIR)$(DOCDIR)/config.example
@install -Dm755 ./pacaur -t $(DESTDIR)$(BINDIR)
- @sed -i "s%declare -r version=.*%declare -r version=\'$(VERSION)\'%" $(DESTDIR)$(BINDIR)/pacaur
+ @sed -e "s%(declare -r version=).*%\1\'$(VERSION)\'%" \
+ -e "s%/usr/share/makepkg%$(shell pkg-config --variable=libmakepkgdir libmakepkg)%" \
+ -Ei $(DESTDIR)$(BINDIR)/pacaur
@install -Dm644 ./completions/bash.completion $(DESTDIR)$(DATAROOTDIR)/bash-completion/completions/pacaur
@install -Dm644 ./completions/zsh.completion $(DESTDIR)$(DATAROOTDIR)/zsh/site-functions/_pacaur
@install -Dm644 ./LICENSE -t $(DESTDIR)$(DATAROOTDIR)/licenses/pacaur
diff --git a/pacaur b/pacaur
index d5b53bf..9c4eb45 100755
--- a/pacaur
+++ b/pacaur
@@ -1,9 +1,11 @@
#!/bin/bash
+# shellcheck disable=1090
+
#
# pacaur: an AUR helper that minimizes user interaction
#
-shopt -s extglob
+shopt -s extglob nullglob
# gettext initialization
export LC_COLLATE='C'
@@ -17,71 +19,53 @@ declare -r version='4.8.6'
#
# Options
-aur=0 asdeps=0 asexplicit=0 checkdeps=0 cleancache=0 color='' devel=0 downloadonly=0 help=0
-info=0 installpkg=0 native=0 needed=0 noconfirm=0 nodeps=0 noedit=0 noop=0 operation=''
-pace=0 pacQ=0 pacS=0 rebuild=0 refresh=0 repo=0 search=0 upgrade=0 ver=0 QUIET=0
+aur=0 asdeps=0 asexplicit=0 checkdeps=0 clean=0 color='' devel=0 downloadonly=0 help=0
+info=0 installpkg=0 needed=0 noconfirm=0 noedit=0 noop=0 operation='' pace=0 pacQ=0 pacS=0
+rebuild=0 refresh=0 repo=0 search=0 upgrade=0 ver=0
declare -i ccount=0 dcount=0 pac=0
-pacmanarg=() pacopts=() auropts=() makeopts=()
+pacmanarg=() pacopts=() auropts=() makeopts+=() ignoredpkgs=() ignoredgrps=()
+export QUIET="${QUIET:-0}"
-# determine config location
-while IFS=':' read -rd: i; do
- if [[ -d "${i}/pacaur" ]]; then
- configdir="${i}/pacaur"
- break
- fi
-done <<<"${XDG_CONFIG_DIRS:-/etc/xdg}:"
-declare -r configdir="${configdir:-/etc/xdg/pacaur}" userconfigdir="${XDG_CONFIG_HOME:-${HOME}/.config}/pacaur" \
- userpacmandir="${XDG_CONFIG_HOME:-${HOME}/.config}/pacman" \
- usercachedir="${XDG_CACHE_HOME:-${HOME}/.cache}/pacaur" tmpdir="${XDG_RUNTIME_DIR:-/tmp}"
-
-# preserve environment variables
-var=('PACMAN' {'PKG','SRC'}{'DEST','EXT'} {'SRCPKG','LOG'}'DEST' 'BUILDDIR' 'GPGKEY' 'PACKAGER' 'CARCH')
-for i in "${var[@]}"; do
- [[ ! "${!i-}" ]] || declare _"${i}"="${!i}"
-done
-PKGDEST="${PKGDEST:-}"
-
-# source makepkg variables
-if [[ -r "${MAKEPKG_CONF-}" ]]; then
- source "${MAKEPKG_CONF}"
-else
- source /etc/makepkg.conf
- if [[ -r "${userpacmandir}/makepkg.conf" ]]; then
- source "${userpacmandir}/makepkg.conf"
- elif [[ -r "${HOME}/.makepkg.conf" ]]; then
- source "${HOME}/.makepkg.conf"
- fi
-fi
-
-# restore environment variables
-for i in "${var[@]/#/_}"; do
- [[ ! "${!i-}" ]] || { j="${i#_}"; declare -x "${i#_}"="${!i:-${!j}}"; unset j; }
-done
+# determine whether we have gettext; make it a no-op if we do not
+command -v gettext >/dev/null || gettext() { printf '%s\n' "$@"; }
+
+# import libmakepkg
+: "${LIBRARY:=/usr/share/makepkg}"
+source "${LIBRARY}/util/config.sh"
+source "${LIBRARY}/util/option.sh"
+source "${LIBRARY}/util/parseopts.sh"
+load_makepkg_config
+: "${PKGDEST:=}"
+check_buildenv check n || checkdeps=1
+
+## determine config location
+XDG_CONFIG_DIRS="${XDG_CONFIG_DIRS:-/etc/xdg}" XDG_CONFIG_DIRS="${XDG_CONFIG_DIRS//://pacaur:}/pacaur:"
+while read -rd: i; do [[ ! -d "${i}" ]] || { configdir="${i}"; break; } done <<<"${XDG_CONFIG_DIRS}"
+declare -r tmpdir="${XDG_RUNTIME_DIR:-/tmp}" configdir="${configdir:-/etc/xdg/pacaur}" \
+ userconfigdir="${XDG_CONFIG_HOME:-${HOME}/.config}/pacaur" \
+ usercachedir="${XDG_CACHE_HOME:-${HOME}/.cache}/pacaur"
# set default config variables
-editor="${VISUAL:-${EDITOR:-vi}}" # build files editor
-displaybuildfiles='diff' # display build files (none|diff|full)
-silent='false' # silence output
-sortby='name' # sort method (name|votes|popularity)
-sortorder='ascending' # sort order (ascending|descending)
-sudoloop='true' # prevent sudo timeout
+editor="${VISUAL:-${EDITOR:-vi}}" # build files editor
+displaybuildfiles='diff' # display build files (none|diff|full)
+silent=0 # silence output
+sortby='name' # sort method (name|votes|popularity)
+sortorder='ascending' # sort order (ascending|descending)
+sudoloop=1 # prevent sudo timeout
# set variables
-declare -r pacmanbin="${PACMAN:-pacman}" # pacman binary
-declare -r clonedir="${AURDEST:-${usercachedir:?}}" # clone directory
+declare -r pacman="${PACMAN:-pacman}" # pacman binary
+declare -r clonedir="${AURDEST:-${usercachedir}}" # clone directory
+pacman_conf=('pacman-conf')
# source xdg config
[[ ! -r "${configdir}/config" ]] || source "${configdir}/config"
[[ ! -r "${userconfigdir}/config" ]] || source "${userconfigdir}/config"
-# source makepkg libraries
-for i in parseopts util option error; do
- source "/usr/share/makepkg/util/${i}.sh"
-done
-check_buildoption check n || checkdeps=1
+set -u # enable after sourcing libmakepkg and configs which may break with it
-# determine whether we have gettext; make it a no-op if we do not
-type -p gettext >/dev/null || gettext() { printf '%s\n' "$@"; }
+case "${silent}" in true) silent=1 ;; false) silent=0 ;; esac
+case "${sudoloop}" in true) sudoloop=1;; false) sudoloop=0;; esac
declare -r vcs='-@(cvs|svn|git|hg|bzr|darcs|daily*|nightly*)' # vcs package glob
@@ -92,25 +76,23 @@ declare -r vcs='-@(cvs|svn|git|hg|bzr|darcs|daily*|nightly*)' # vcs package glob
#
ClassifyPkgs() {
- local noaurpkgs=() norepopkgs=()
+ local i noaurpkgs=()
# global aurpkgs repopkgs
((! repo)) || repopkgs=("${pkgs[@]}")
((! aur)) || aurpkgs=("${pkgs[@]#aur/}") # search aur/pkgs in AUR
if ((! repo && ! aur)); then
for i in "${pkgs[@]}"; do
- if [[ "${i}" = 'aur/'* ]]; then
- aurpkgs+=("${i:4}") # search aur/pkgs in AUR
- continue
- fi
- noaurpkgs+=("${i}")
- done
- [[ "${noaurpkgs[*]}" ]] &&
- mapfile -t norepopkgs < <(LC_ALL='C' "${pacmanbin}" -Sp "${noaurpkgs[@]}" 2>&1 >/dev/null)
- norepopkgs=("${norepopkgs[@]#error: target not found: }")
- for i in "${norepopkgs[@]}"; do # do not search repo/pkgs in AUR
- [[ " ${noaurpkgs[*]} " = *' '+([a-zA-Z0-9.+-])"/${i} "* ]] || aurpkgs+=("${i}")
+ [[ "${i::4}" = 'aur/' ]] && aurpkgs+=("${i:4}") || noaurpkgs+=("${i}") # search aur/pkgs in AUR
done
- mapfile -t repopkgs < <(CommArr 'aurpkgs' 'noaurpkgs' '-13')
+ if [[ "${noaurpkgs[*]}" ]]; then
+ while read -r i; do
+ #[[ "${i}" != 'error: database not found: '* ]] || continue
+ i="${i#error: target not found: }"
+ [[ "${i}" != 'error: '* ]] || continue
+ [[ " ${noaurpkgs[*]} " = *' '+([a-zA-Z0-9.+-])"/${i} "* ]] || aurpkgs+=("${i}")
+ done < <(LC_ALL='C' "${pacman}" -Sp "${noaurpkgs[@]}" 2>&1 >/dev/null)
+ fi
+ mapfile -t repopkgs < <(CommArr -13 aurpkgs noaurpkgs)
fi
}
@@ -120,7 +102,7 @@ Core() {
((! upgrade)) || UpgradeAur
IgnoreChecks
DepsSolver
- IgnoreDepsChecks
+ IgnoreDepsCheck
ProviderChecks
ConflictChecks
ReinstallChecks
@@ -134,16 +116,18 @@ UpgradeAur() {
local foreignpkgs allaurpkgs i
# global aurpkgs
info $"%sStarting AUR upgrade...%s" "${colorW}" "${reset}"
- mapfile -t foreignpkgs < <("${pacmanbin}" -Qmq)
+ mapfile -t aurpkgs < <(auracle sync -q) # use auracle to find out of date AUR packages
+ # quit if there are no possibilities for packages ending up in aurpkgs
+ ((devel)) || NothingToDo "${aurpkgs[@]}" "${pkgs[@]}"
+
+ mapfile -t foreignpkgs < <("${pacman}" -Qmq)
SetInfo "${foreignpkgs[@]}"
mapfile -t allaurpkgs < <(GetInfo Name)
# foreign packages check
while read -r i; do
warn $"%s is %snot present%s in AUR -- skipping" "${colorW}${i}${reset}" "${colorY}" "${reset}"
- done < <(CommArr 'allaurpkgs' 'foreignpkgs' '-13')
-
- mapfile -t aurpkgs < <(auracle sync -q) # use auracle to find out of date AUR packages
+ done < <(CommArr -13 allaurpkgs foreignpkgs)
# add devel packages
if ((devel)); then
@@ -154,14 +138,13 @@ UpgradeAur() {
aurpkgs+=("${pkgs[@]}")
- # avoid possible duplicate
- aurpkgs=($(printf '%s\n' "${aurpkgs[@]}" | sort -u))
+ mapfile -t aurpkgs < <(SortArr "${aurpkgs[@]}") # avoid possible duplicate
NothingToDo "${aurpkgs[@]}"
}
IgnoreChecks() {
- local checkaurpkgs checkaurpkgsAver checkaurpkgsQver checkaurpkgsgrp i
+ local checkaurpkgs checkaurpkgsver checkaurgrps i j
# global aurpkgs rmaurpkgs
[[ "${ignoredpkgs[*]}" || "${ignoredgrps[*]}" ]] || return
@@ -171,20 +154,19 @@ IgnoreChecks() {
# check targets
SetInfo "${aurpkgsnover[@]}"
mapfile -t checkaurpkgs < <(GetInfo Name)
- mapfile -t errdeps < <(CommArr 'aurpkgsnover' 'checkaurpkgs' '-3')
+ mapfile -t errdeps < <(CommArr -3 aurpkgsnover checkaurpkgs)
aurpkgsnover=()
- mapfile -t checkaurpkgsAver < <(GetInfo Version)
- mapfile -t checkaurpkgsQver < <(expac -Qv '%v' "${checkaurpkgs[@]}" 2>&1)
+ mapfile -t checkaurpkgsver < <(GetInfo Version)
for i in "${!checkaurpkgs[@]}"; do
- [[ "${checkaurpkgs[i]}" != *${vcs} ]] || checkaurpkgsAver[i]=$"latest"
+ [[ "${checkaurpkgs[i]}" != *${vcs} ]] || checkaurpkgsver[i]=$"latest"
isignored=0
- if [[ " ${ignoredpkgs[*]} " = *" ${checkaurpkgs[i]} "* ]]; then
+ if [[ "${ignoredpkgs[*]}" && " ${ignoredpkgs[*]} " = *" ${checkaurpkgs[i]} "* ]]; then
isignored=1
elif [[ "${ignoredgrps[*]}" ]]; then
- checkaurpkgsgrp=($(GetInfo Groups "${checkaurpkgs[i]}"))
- mapfile -tO "${#checkaurpkgsgrp[@]}" checkaurpkgsgrp < <(expac -Ql'\n' '%G' "${checkaurpkgs[i]}")
- for j in "${checkaurpkgsgrp[@]}"; do
+ mapfile -t checkaurgrps < <(GetInfo Groups "${checkaurpkgs[i]}")
+ mapfile -tO "${#checkaurgrps[@]}" checkaurgrps < <(expac -Ql'\n' '%G' "${checkaurpkgs[i]}")
+ for j in "${checkaurgrps[@]}"; do
[[ " ${ignoredgrps[*]} " != *" ${j} "* ]] || isignored=1
done
fi
@@ -204,7 +186,8 @@ IgnoreChecks() {
fi
else
warn $"%s: ignoring package upgrade (%s => %s)" "${colorW}${checkaurpkgs[i]}${reset}" \
- "${colorR}${checkaurpkgsQver[i]}${reset}" "${colorG}${checkaurpkgsAver[i]}${reset}"
+ "${colorR}$(expac -Q '%v' "${checkaurpkgs[i]}")${reset}" \
+ "${colorG}${checkaurpkgsver[i]}${reset}"
rmaurpkgs+=("${checkaurpkgs[i]}")
continue
fi
@@ -217,9 +200,9 @@ IgnoreChecks() {
}
DepsSolver() {
- local i aurpkgsconflicts
+ local i j aurpkgsconflicts repodeps=()
# global aurpkgs aurpkgsnover aurpkgsproviders aurdeps deps errdeps
- # global errdepsnover foreignpkgs repodeps depsAname depsAver depsAood depsQver
+ # global errdepsnover foreignpkgs depsAname depsAver depsAood depsQver
printf '%s\n' $"resolving dependencies..."
# remove AUR pkgs versioning
@@ -230,14 +213,14 @@ DepsSolver() {
# set targets providers
aurpkgsproviders=("${aurpkgsnover[@]}")
- aurpkgsproviders+=($(GetInfo Provides))
+ mapfile -tO "${#aurpkgsproviders[@]}" aurpkgsproviders < <(GetInfo Provides)
aurpkgsproviders=("${aurpkgsproviders[@]%%[><=]*}")
# check targets conflicts
- aurpkgsconflicts=($(GetInfo Conflicts))
+ mapfile -t aurpkgsconflicts < <(GetInfo Conflicts)
if [[ "${aurpkgsconflicts[*]}" ]]; then
aurpkgsconflicts=("${aurpkgsconflicts[@]%%[><=]*}")
- mapfile -t aurpkgsconflicts < <(CommArr 'aurpkgsproviders' 'aurpkgsconflicts' '-12')
+ mapfile -t aurpkgsconflicts < <(CommArr -12 aurpkgsproviders aurpkgsconflicts)
for i in "${aurpkgsconflicts[@]}"; do
[[ " ${aurpkgsnover[*]} " = *" ${i} "* ]] || continue
[[ " $(GetInfo Conflicts "${i}") " != *" ${i} "* ]] || continue
@@ -249,11 +232,11 @@ DepsSolver() {
deps=("${aurpkgsnover[@]}")
- [[ "${foreignpkgs[*]}" ]] || mapfile -t foreignpkgs < <("${pacmanbin}" -Qmq)
+ [[ "${foreignpkgs[*]}" ]] || mapfile -t foreignpkgs < <("${pacman}" -Qmq)
FindDepsAur "${aurpkgsnover[@]}"
# avoid possible duplicate
- mapfile -t deps < <(CommArr 'aurdepspkgs' 'deps' '-13')
+ mapfile -t deps < <(CommArr -13 aurdepspkgs deps)
deps+=("${aurdepspkgs[@]}")
# ensure correct dependency order
@@ -268,8 +251,8 @@ DepsSolver() {
mapfile -t depsAood < <(GetInfo OutOfDate)
mapfile -t depsAmain < <(GetInfo Maintainer)
for i in "${!depsAname[@]}"; do
- read -rd' ' depsQver[i] < <(expac -Qs '%v' "^${depsAname[i]}$")
- [[ "${depsQver[i]}" ]] || depsQver[i]='%' # avoid empty elements shift
+ read -r depsQver[i] < <(expac -Qs '%v' "^${depsAname[i]}$")
+ : "${depsQver[i]:=%}" # avoid empty elements shift
[[ "${depsAname[i]}" != *${vcs} ]] || depsAver[i]=$"latest"
done
@@ -279,23 +262,19 @@ DepsSolver() {
if [[ " ${aurpkgsnover[*]} " = *" ${errdepsnover[i]} "* ]]; then
fail $"no results found for %s" "${errdeps[i]}"
else
- unset tsorterrdeps errdepslist currenterrdep
+ unset -v currenterrdep
# find relevant tsorted deps chain
for j in "${deps[@]}"; do
tsorterrdeps+=("${j}")
[[ "${j}" != "${errdepsnover[i]}" ]] || break
done
# reverse deps order
- for j in "${!tsorterrdeps[@]}"; do
- tsorterrdepsrev[j]="${tsorterrdeps[-j-1]}"
- done
- tsorterrdeps=("${tsorterrdepsrev[@]}"); unset tsorterrdepsrev
+ mapfile -t tsorterrdeps < \
+ <(for j in "${!tsorterrdeps[@]}"; do printf '%s\n' "${tsorterrdeps[-j-1]}"; done)
errdepslist+=("${tsorterrdeps[0]}")
FindDepsAurError "${tsorterrdeps[@]}"
- for j in "${!errdepslist[@]}"; do
- [[ "${errdepslist[-j-1]}" ]] && errdepslistrev+=("${errdepslist[-j-1]}")
- done
- errdepslist=("${errdepslistrev[@]}"); unset errdepslistrev
+ mapfile -t errdepslist < \
+ <(for j in "${!errdepslist[@]}"; do printf '%s\n' "${errdepslist[-j-1]}"; done)
fail $"no results found for %s (dependency tree: %s)" "${errdeps[i]}" "${errdepslist[*]}"
fi
done
@@ -306,17 +285,16 @@ DepsSolver() {
FindDepsRepo "${repodeps[@]}"
# avoid possible duplicate
- repodepspkgs=($(printf '%s\n' "${repodepspkgs[@]}" | sort -u))
+ mapfile -t repodepspkgs < <(SortArr "${repodepspkgs[@]}")
}
FindDepsAur() {
- local depAname depAver depspkgs depspkgsaurtmp builtpkg vcsdepspkgs assumedepspkgs aurversionpkgs
+ local depAname depAver depspkgs depspkgsaurtmp builtpkg assumedepspkgs vcsdepspkgs=() aurversionpkgs=()
local aurversionpkgsname aurversionpkgsver aurversionpkgsaurver aurversionpkgsverdiff i j
# global aurpkgsnover depspkgsaur errdeps repodeps aurdepspkgs prevdepspkgsaur foreignpkgs
- ((nodeps && dcount >= 2)) && return
+ ((dcount < 2)) || return
# set info
- unset aurversionpkgs
if [[ "${depspkgsaur[*]}" ]]; then
SetInfo "${depspkgsaur[@]}"
aurversionpkgs=("${prevdepspkgsaur[@]}")
@@ -328,39 +306,35 @@ FindDepsAur() {
# versioning check
if [[ "${aurversionpkgs[*]}" ]]; then
for i in "${!aurversionpkgs[@]}"; do
- unset aurversionpkgsname aurversionpkgsver aurversionpkgsaurver aurversionpkgsverdiff
- aurversionpkgsname="${aurversionpkgs[i]%%[><=]*}"
- aurversionpkgsver="${aurversionpkgs[i]##*[><=]}"
+ aurversionpkgsname="${aurversionpkgs[i]%%[><=]*}" aurversionpkgsver="${aurversionpkgs[i]##*[><=]}"
aurversionpkgsaurver="$(GetInfo Version "${aurversionpkgsname}")"
- aurversionpkgsverdiff="$(vercmp "${aurversionpkgsaurver}" "${aurversionpkgsver}")"
+ aurversionpkgsverdiff="$(Vercmp "${aurversionpkgsaurver}" "${aurversionpkgsver}")"
# not found in AUR nor repo
[[ "${aurversionpkgsaurver}" || " ${errdeps[*]} " = *" ${aurversionpkgs[i]} "* ]] ||
{ errdeps+=("${aurversionpkgs[i]}"); continue; }
case "${aurversionpkgs[i]}" in
- *">"*|*"<"*|*"="*)
- # found in AUR but version not correct
+ *">"*|*"<"*|*"="*) # found in AUR but version not correct
case "${aurversionpkgs[i]}" in
- *">="*) ((aurversionpkgsverdiff >= 0)) && continue;;
- *"<="*) ((aurversionpkgsverdiff <= 0)) && continue;;
- *">"*) ((aurversionpkgsverdiff > 0)) && continue;;
- *"<"*) ((aurversionpkgsverdiff < 0)) && continue;;
- *"="*) ((aurversionpkgsverdiff == 0)) && continue;;
+ *">="*) ((aurversionpkgsverdiff < 0)) || continue;;
+ *"<="*) ((aurversionpkgsverdiff > 0)) || continue;;
+ *">"*) ((aurversionpkgsverdiff <= 0)) || continue;;
+ *"<"*) ((aurversionpkgsverdiff >= 0)) || continue;;
+ *"="*) ((aurversionpkgsverdiff)) || continue;;
esac
- [[ " ${errdeps[*]} " = *" ${aurversionpkgs[i]} "* ]] ||
- errdeps+=("${aurversionpkgs[i]}");;
+ [[ " ${errdeps[*]} " = *" ${aurversionpkgs[i]} "* ]] || errdeps+=("${aurversionpkgs[i]}");;
*) continue;;
esac
done
fi
- depspkgs=($(GetInfo Depends))
+ mapfile -t depspkgs < <(GetInfo Depends)
# cached packages makedeps check
if [[ ! "${PKGDEST}" ]] || ((rebuild)); then
- depspkgs+=($(GetInfo MakeDepends))
- ((checkdeps)) && depspkgs+=($(GetInfo CheckDepends))
+ mapfile -tO "${#depspkgs[@]}" depspkgs < <(GetInfo MakeDepends)
+ ((! checkdeps)) || mapfile -tO "${#depspkgs[@]}" depspkgs < <(GetInfo CheckDepends)
else
depspkgsaurtmp=("${depspkgsaur[@]:-${aurpkgs[@]}}")
for i in "${!depspkgsaurtmp[@]}"; do
@@ -368,104 +342,99 @@ FindDepsAur() {
depAver="$(GetInfo Version "${depspkgsaurtmp[i]}")"
GetBuiltPkg "${depAname}-${depAver}" "${PKGDEST}"
if [[ ! "${builtpkg}" ]]; then
- depspkgs+=($(GetInfo MakeDepends "${depspkgsaurtmp[i]}"))
- ((checkdeps)) && depspkgs+=($(GetInfo CheckDepends "${depspkgsaurtmp[i]}"))
+ mapfile -tO "${#depspkgs[@]}" depspkgs < <(GetInfo MakeDepends "${depspkgsaurtmp[i]}")
+ ((! checkdeps)) ||
+ mapfile -tO "${#depspkgs[@]}" depspkgs < <(GetInfo CheckDepends "${depspkgsaurtmp[i]}")
fi
- unset builtpkg
+ builtpkg=''
done
fi
# remove deps provided by targets
- [[ "${aurpkgsproviders[*]}" ]] && mapfile -t depspkgs < <(CommArr 'aurpkgsproviders' 'depspkgs' '-13')
+ [[ ! "${aurpkgsproviders[*]}" ]] || mapfile -t depspkgs < <(CommArr -13 aurpkgsproviders depspkgs)
# workaround for limited RPC support of architecture dependent fields
if [[ "${CARCH}" = 'i686' ]]; then
for i in "${!depspkgs[@]}"; do
- [[ "${depspkgs[i]}" != @(lib32-|gcc-multilib)* ]] || unset 'depspkgs[i]'
+ case "${depspkgs[i]}" in lib32-*|gcc-multilib*) unset -v 'depspkgs[i]';; esac
done
- depspkgs=("${depspkgs[@]}")
fi
- # remove versioning
- depspkgs=("${depspkgs[@]%%[><=]*}")
- # remove installed deps
- if ((! devel)); then
- mapfile -t depspkgs < <("${pacmanbin}" -T -- "${depspkgs[@]}" | sort -u)
- else
- # check providers
- unset vcsdepspkgs
+ if ((devel)); then
+ # remove versioning and check providers
+ depspkgs=("${depspkgs[@]%%[><=]*}")
for i in "${!depspkgs[@]}"; do
- read -rd' ' j < <(expac -Qs '%n %P' "^${depspkgs[i]}$")
+ read -r j < <(expac -Qs '%n' "^${depspkgs[i]}$")
if [[ "${j}" ]]; then
depspkgs[i]="${j}"
- ((devel)) && [[ " ${ignoredpkgs[*]} " != *" ${j} "* && "${j}" = *${vcs} ]] &&
+ ((! devel)) || [[ " ${ignoredpkgs[*]} " = *" ${j} "* || "${j}" != *${vcs} ]] ||
vcsdepspkgs+=("${j}")
else
foreignpkgs+=("${depspkgs[i]}")
fi
done
# reorder devel
- mapfile -t depspkgs < <("${pacmanbin}" -T -- "${depspkgs[@]}" | sort -u)
- mapfile -t depspkgs < <(CommArr 'depspkgs' 'vcsdepspkgs' '-3')
+ mapfile -t depspkgs < <("${pacman}" -T "${depspkgs[@]}")
+ mapfile -t depspkgs < <(CommArr -3 depspkgs vcsdepspkgs)
+ else
+ mapfile -t depspkgs < <("${pacman}" -T "${depspkgs[@]}")
fi
# split repo and AUR depends pkgs
- unset depspkgsaur
+ unset -v depspkgsaur
if [[ "${depspkgs[*]}" ]]; then
# remove all pkgs versioning
- if ((nodeps && dcount == 1)); then
+ if ((dcount == 1)); then
depspkgs=("${depspkgs[@]%%[><=]*}")
# assume installed deps
elif [[ "${assumeinstalled[*]}" ]]; then
# remove versioning
assumeinstalled=("${assumeinstalled[@]%%[><=]*}")
for i in "${!assumeinstalled[@]}"; do
- unset assumedepspkgs
+ unset -v assumedepspkgs
for j in "${!depspkgs[@]}"; do
assumedepspkgs[j]="${depspkgs[j]%%[><=]*}"
[[ " ${assumedepspkgs[*]} " = *" ${assumeinstalled[i]} "* ]] &&
depspkgs[j]="${assumeinstalled[i]}"
done
done
- mapfile -t depspkgs < <(CommArr 'assumeinstalled' 'depspkgs' '-13')
+ mapfile -t depspkgs < <(CommArr -13 assumeinstalled depspkgs)
fi
if [[ "${depspkgs[*]}" ]]; then
- mapfile -t depspkgsaur < <(LC_ALL='C' "${pacmanbin}" -Sp "${depspkgs[@]}" 2>&1 >/dev/null) &&
- depspkgsaur=("${depspkgsaur[@]#error: target not found: }")
- mapfile -tO "${#repodeps[@]}" repodeps < <(CommArr 'depspkgsaur' 'depspkgs' '-13')
+ mapfile -t depspkgsaur < <(LC_ALL='C' "${pacman}" -Sp "${depspkgs[@]}" 2>&1 >/dev/null)
+ depspkgsaur=("${depspkgsaur[@]#error: target not found: }")
+ mapfile -tO "${#repodeps[@]}" repodeps < <(CommArr -13 depspkgsaur depspkgs)
fi
fi
- unset depspkgs
+ unset -v depspkgs
- # remove duplicate
- [[ "${depspkgsaur[*]}" ]] && mapfile -t depspkgsaur < <(CommArr 'aurdepspkgs' 'depspkgsaur' '-13')
+ # remove duplicates
+ [[ ! "${depspkgsaur[*]}" ]] || mapfile -t depspkgsaur < <(CommArr -13 aurdepspkgs depspkgsaur)
# dependency cycle check
- [[ "${prevdepspkgsaur[*]}" && "${prevdepspkgsaur[*]}" = "${depspkgsaur[*]}" ]] &&
+ [[ ! "${prevdepspkgsaur[*]}" || "${prevdepspkgsaur[*]}" != "${depspkgsaur[*]}" ]] ||
error $"dependency cycle detected (%s)" "${depspkgsaur[*]}" "${E_INSTALL_DEPS_FAILED}"
if [[ "${depspkgsaur[*]}" ]]; then
- # store for AUR version check
- ((nodeps)) || prevdepspkgsaur=("${depspkgsaur[@]}")
- # remove duplicates and versioning
- depspkgsaur=($(printf '%s\n' "${depspkgsaur[@]%%[><=]*}" | sort -u))
+ ((dcount)) || prevdepspkgsaur=("${depspkgsaur[@]}") # store for AUR version check
+ depspkgsaur=("${depspkgsaur[@]%%[><=]*}") # remove versioning
fi
[[ ! "${depspkgsaur[*]}" ]] || { aurdepspkgs+=("${depspkgsaur[@]}"); FindDepsAur "${depspkgsaur[@]}"; }
}
SortDepsAur() {
- local i j sortaurpkgs sortdepspkgs sortdepspkgsaur
+ local i j sortdepspkgs sortdepspkgsaur sortaurpkgs=("${checkedsortdepspkgsaur[@]:-${aurpkgs[@]}}")
# global checkedsortdepspkgsaur allcheckedsortdepspkgsaur errdepsnover
- sortaurpkgs=("${checkedsortdepspkgsaur[@]:-${aurpkgs[@]}}")
- unset checkedsortdepspkgsaur
+ checkedsortdepspkgsaur=()
for i in "${!sortaurpkgs[@]}"; do
- unset sortdepspkgs sortdepspkgsaur
+ sortdepspkgsaur=()
- sortdepspkgs+=($(GetInfo Depends "${sortaurpkgs[i]}"))
- sortdepspkgs+=($(GetInfo MakeDepends "${sortaurpkgs[i]}"))
- ((checkdeps)) && sortdepspkgs+=($(GetInfo CheckDepends "${sortaurpkgs[i]}"))
+ mapfile -t sortdepspkgs < <(GetInfo Depends "${sortaurpkgs[i]}")
+ mapfile -tO "${#sortdepspkgs[@]}" sortdepspkgs < <(GetInfo MakeDepends "${sortaurpkgs[i]}")
+ ((! checkdeps)) ||
+ mapfile -tO "${#sortdepspkgs[@]}" sortdepspkgs < <(GetInfo CheckDepends "${sortaurpkgs[i]}")
# remove versioning
errdepsnover=("${errdeps[@]%%[><=]*}")
@@ -473,47 +442,48 @@ SortDepsAur() {
# check AUR deps only
for j in "${!sortdepspkgs[@]}"; do
sortdepspkgs[j]="${sortdepspkgs[j]%%[><=]*}"
- sortdepspkgsaur+=($(GetInfo Name "${sortdepspkgs[j]}"))
+ mapfile -tO "${#sortdepspkgsaur[@]}" sortdepspkgsaur < <(GetInfo Name "${sortdepspkgs[j]}")
# add erroneous AUR deps
- [[ " ${errdepsnover[*]} " = *" ${sortdepspkgs[j]} "* ]] && sortdepspkgsaur+=("${sortdepspkgs[j]}")
+ [[ " ${errdepsnover[*]} " != *" ${sortdepspkgs[j]} "* ]] || sortdepspkgsaur+=("${sortdepspkgs[j]}")
done
# prepare tsort list
- if [[ ! "${sortdepspkgsaur[*]}" ]]; then
- tsortdeps+=("${sortaurpkgs[i]} ${sortaurpkgs[i]}")
- else
+ if [[ "${sortdepspkgsaur[*]}" ]]; then
for j in "${!sortdepspkgsaur[@]}"; do
tsortdeps+=("${sortaurpkgs[i]} ${sortdepspkgsaur[j]}")
done
+ else
+ tsortdeps+=("${sortaurpkgs[i]} ${sortaurpkgs[i]}")
fi
# filter non checked deps
- mapfile -t sortdepspkgsaur < <(CommArr 'allcheckedsortdepspkgsaur' 'sortdepspkgsaur' '-13')
+ mapfile -t sortdepspkgsaur < <(CommArr -13 allcheckedsortdepspkgsaur sortdepspkgsaur)
if [[ "${sortdepspkgsaur[*]}" ]]; then
checkedsortdepspkgsaur+=("${sortdepspkgsaur[@]}")
allcheckedsortdepspkgsaur+=("${sortdepspkgsaur[@]}")
- allcheckedsortdepspkgsaur=($(printf '%s\n' "${allcheckedsortdepspkgsaur[@]}" | sort -u))
+ mapfile -t allcheckedsortdepspkgsaur < <(SortArr "${allcheckedsortdepspkgsaur[@]}")
fi
done
if [[ "${checkedsortdepspkgsaur[*]}" ]]; then
- checkedsortdepspkgsaur=($(printf '%s\n' "${checkedsortdepspkgsaur[@]}" | sort -u))
+ mapfile -t checkedsortdepspkgsaur < <(SortArr "${checkedsortdepspkgsaur[@]}")
SortDepsAur "${checkedsortdepspkgsaur[@]}"
fi
}
FindDepsAurError() {
- local i nexterrdep nextallerrdeps
+ local i nexterrdep="${nexterrdep-}" nextallerrdeps
# global errdepsnover errdepslist tsorterrdeps currenterrdep
for i in "${tsorterrdeps[@]}"; do
[[ " ${errdepsnover[*]} ${errdepslist[*]} " = *" ${i} "* ]] && break || nexterrdep="${i}"
done
- [[ "${currenterrdep[*]}" ]] || currenterrdep="${tsorterrdeps[0]}"
+ currenterrdep="${currenterrdep:-${tsorterrdeps[0]}}"
if [[ " ${aurpkgs[*]} " != *" ${nexterrdep} "* ]]; then
- nextallerrdeps=($(GetInfo Depends "${nexterrdep}"))
- nextallerrdeps+=($(GetInfo MakeDepends "${nexterrdep}"))
- ((checkdeps)) && nextallerrdeps+=($(GetInfo CheckDepends "${nexterrdep}"))
+ mapfile -t nextallerrdeps < <(GetInfo Depends "${nexterrdep}")
+ mapfile -tO "${#nextallerrdeps[@]}" nextallerrdeps < <(GetInfo MakeDepends "${nexterrdep}")
+ ((! checkdeps)) ||
+ mapfile -tO "${#nextallerrdeps[@]}" nextallerrdeps < <(GetInfo CheckDepends "${nexterrdep}")
# remove versioning
nextallerrdeps=("${nextallerrdeps[@]%%[><=]*}")
@@ -538,60 +508,58 @@ FindDepsAurError() {
}
FindDepsRepo() {
- local allrepodepspkgs repodepspkgstmp
+ local allrepodepspkgs=() repodepspkgstmp=()
# global repodeps repodepspkgs
[[ "${repodeps[*]}" ]] || return
# reduce root binary deps
- repodeps=($(printf '%s\n' "${repodeps[@]}" | sort -u))
+ mapfile -t repodeps < <(SortArr "${repodeps[@]}")
# add initial repodeps
[[ "${repodepspkgs[*]}" ]] || repodepspkgs=("${repodeps[@]}")
+ repodepspkgs=("${repodepspkgs[@]:-${repodeps[@]}}")
- # get non installed binary deps
- unset allrepodepspkgs repodepspkgstmp
- # no version check needed as all deps are repo deps
+ # get non installed binary deps, no version check needed as all deps are repo deps
[[ ! "${repodeps[*]}" ]] || mapfile -t allrepodepspkgs < <(expac -S1l'\n' '%E' "${repodeps[@]}")
[[ ! "${allrepodepspkgs[*]}" ]] ||
- mapfile -t repodepspkgstmp < <("${pacmanbin}" -T -- "${allrepodepspkgs[@]}" | sort -u)
+ mapfile -t repodepspkgstmp < <("${pacman}" -T "${allrepodepspkgs[@]}" | sort -u)
# remove duplicate
- [[ ! "${repodepspkgstmp[*]}" ]] || mapfile -t repodepspkgstmp < <(CommArr 'repodepspkgs'{,'tmp'} '-13')
+ [[ ! "${repodepspkgstmp[*]}" ]] || mapfile -t repodepspkgstmp < <(CommArr -13 repodepspkgs{,tmp})
[[ ! "${repodepspkgstmp[*]}" ]] || { repodepspkgs+=("${repodepspkgstmp[@]}")
repodeps=("${repodepspkgstmp[@]}"); FindDepsRepo "${repodeps[@]}"; }
}
FindDepsRepoProvider() {
- local allrepodepspkgs providerrepodepspkgstmp
- # global repodeps repodepspkgs
+ local -a allproviderrepodepspkgs=() providerrepodepspkgstmp=()
+ # global repodepspkgs
[[ "${providerspkgs[*]}" ]] || return
# reduce root binary deps
- providerspkgs=($(printf '%s\n' "${providerspkgs[@]}" | sort -u))
+ mapfile -t providerspkgs < <(SortArr "${providerspkgs[@]}")
# get non installed repo deps
- unset allproviderrepodepspkgs providerrepodepspkgstmp
[[ ! "${providerspkgs[*]}" ]] ||
mapfile -t allproviderrepodepspkgs < <(expac -S1l'\n' '%E' "${providerspkgs[@]}")
# no version check needed as all deps are binary
- [[ "${allproviderrepodepspkgs[*]}" ]] &&
- mapfile -t providerrepodepspkgstmp < <("${pacmanbin}" -T -- "${allproviderrepodepspkgs[@]}" | sort -u)
+ [[ ! "${allproviderrepodepspkgs[*]}" ]] ||
+ mapfile -t providerrepodepspkgstmp < <("${pacman}" -T "${allproviderrepodepspkgs[@]}" | sort -u)
# remove duplicate
- [[ "${providerrepodepspkgstmp[*]}" ]] &&
- mapfile -t providerrepodepspkgstmp < <(CommArr 'repodepspkgs' 'providerrepodepspkgstmp' '-13')
+ [[ ! "${providerrepodepspkgstmp[*]}" ]] ||
+ mapfile -t providerrepodepspkgstmp < <(CommArr -13 repodepspkgs providerrepodepspkgstmp)
[[ ! "${providerrepodepspkgstmp[*]}" ]] || { repodepspkgs+=("${providerrepodepspkgstmp[@]}")
providerspkgs=("${providerrepodepspkgstmp[@]}"); FindDepsRepoProvider "${providerspkgs[@]}"; }
}
IgnoreDepsChecks() {
- local i
- # global ignoredpkgs aurpkgs aurdepspkgs aurdepspkgsgrp repodepspkgsgrp rmaurpkgs deps repodepspkgs
+ local i repodepspkgsgrp=()
+ # global ignoredpkgs ignoredgrps aurpkgs aurdepspkgs aurdepspkgsgrp rmaurpkgs deps repodepspkgs
[[ "${ignoredpkgs[*]}" || "${ignoredgrps[*]}" ]] || return
# add checked targets and preserve tsorted order
- deps=("${deps[@]:0:${#aurpkgs[@]}}")
+ deps=("${deps[@]::${#aurpkgs[@]}}")
# check dependencies
for i in "${repodepspkgs[@]}"; do
@@ -599,11 +567,10 @@ IgnoreDepsChecks() {
if [[ " ${ignoredpkgs[*]} " = *" ${i} "* ]]; then
isignored=1
elif [[ "${ignoredgrps[*]}" ]]; then
- unset repodepspkgsSgrp repodepspkgsQgrp
mapfile -t repodepspkgsgrp < <(expac -S1l'\n' '%G' "${i}")
mapfile -tO "${#repodepspkgsgrp[@]}" repodepspkgsgrp < <(expac -Ql'\n' '%G' "${i}")
for j in "${repodepspkgsgrp[@]}"; do
- [[ " ${ignoredgrps[*]} " = *" ${j} "* ]] && isignored=1
+ [[ " ${ignoredgrps[*]} " != *" ${j} "* ]] || isignored=1
done
fi
@@ -615,18 +582,18 @@ IgnoreDepsChecks() {
done
for i in "${aurdepspkgs[@]}"; do
# skip already checked dependencies
- [[ " ${aurpkgs[*]} " = *" ${i} "* ]] && continue
- [[ " ${rmaurpkgs[*]} " = *" ${i} "* ]] &&
+ [[ " ${aurpkgs[*]} " != *" ${i} "* ]] || continue
+ [[ " ${rmaurpkgs[*]} " != *" ${i} "* ]] ||
error $"Unresolved dependency '%s'" "${colorW}${i}${reset}" "${E_INSTALL_DEPS_FAILED}"
isignored=0
if [[ " ${ignoredpkgs[*]} " = *" ${i} "* ]]; then
isignored=1
elif [[ "${ignoredgrps[*]}" ]]; then
- aurdepspkgsgrp=($(GetInfo Groups "${i}"))
+ mapfile -t aurdepspkgsgrp < <(GetInfo Groups "${i}")
mapfile -tO "${#aurdepspkgsgrp[@]}" aurdepspkgsgrp < <(expac -Ql'\n' '%G' "${i}")
for j in "${aurdepspkgsgrp[@]}"; do
- [[ " ${ignoredgrps[*]} " = *" ${j} "* ]] && isignored=1
+ [[ " ${ignoredgrps[*]} " != *" ${j} "* ]] || isignored=1
done
fi
@@ -647,38 +614,34 @@ IgnoreDepsChecks() {
}
ProviderChecks() {
- local providersdeps providersdepsnover providers repodepspkgsprovided providerspkgs provided
- local nb providersnb
+ local providersdeps{,nover} repodepspkgsprovided providerspkgs {,providers}{,nb} provided=()
# global repodepspkgs repoprovidersconflictingpkgs repodepsSver repodepsSrepo repodepsQver
[[ "${repodepspkgs[*]}" ]] || return
# filter directly provided deps
mapfile -t noprovidersdeps < <(expac -S1 '%n' "${repodepspkgs[@]}")
- mapfile -t providersdeps < <(CommArr 'noprovidersdeps' 'repodepspkgs' '-13')
+ mapfile -t providersdeps < <(CommArr -13 noprovidersdeps repodepspkgs)
# remove installed providers
- mapfile -t providersdeps < <("${pacmanbin}" -T -- "${providersdeps[@]}" | sort -u)
+ mapfile -t providersdeps < <("${pacman}" -T "${providersdeps[@]}" | sort -u)
for i in "${!providersdeps[@]}"; do
# check versioning
- unset providersdepsname providersdepsver providersdepsSname providersdepsSver
- providersdepsname="${providersdeps[i]%%[><=]*}"
- providersdepsver="${providersdeps[i]##*[><=]}"
- mapfile -t providersdepsSname < <(expac -Ss '%n' "^${providersdepsname[i]}$")
- mapfile -t providersdepsSver < <(expac -Ss '%v' "^${providersdepsname[i]}$")
+ providersdepsname="${providersdeps[i]%%[><=]*}" providersdepsver="${providersdeps[i]##*[><=]}"
+ mapfile -t providersdepsSname < <(expac -Ss '%n' "^${providersdepsname}$")
+ mapfile -t providersdepsSver < <(expac -Ss '%v' "^${providersdepsname}$")
case "${providersdeps[i]}" in
*">"*|*"<"*|*"="*)
for j in "${!providersdepsSname[@]}"; do
- unset providersdepverdiff
- providersdepsverdiff="$(vercmp "${providersdepsver}" "${providersdepsSver[j]}")"
+ providersdepsverdiff="$(Vercmp "${providersdepsver}" "${providersdepsSver[j]}")"
# found in repo but version not correct
case "${providersdeps[i]}" in
- *">="*) ((providersdepsverdiff >= 0)) && continue;;
- *"<="*) ((providersdepsverdiff <= 0)) && continue;;
- *">"*) ((providersdepsverdiff > 0)) && continue;;
- *"<"*) ((providersdepsverdiff < 0)) && continue;;
- *"="*) ((providersdepsverdiff == 0)) && continue;;
+ *">="*) ((providersdepsverdiff < 0)) || continue;;
+ *"<="*) ((providersdepsverdiff > 0)) || continue;;
+ *">"*) ((providersdepsverdiff <= 0)) || continue;;
+ *"<"*) ((providersdepsverdiff >= 0)) || continue;;
+ *"="*) ((providersdepsverdiff)) || continue;;
esac
providersdepsnover+=("${providersdepsSname[j]}")
done
@@ -692,20 +655,18 @@ ProviderChecks() {
mapfile -t providers < <(expac -Ss '%n' "^${providersdeps[i]}$" | sort -u)
# filter out non matching versioned providers
- [[ "${providersdepsnover[*]}" ]] && mapfile -t providers < <(CommArr 'providers'{'depsnover',} '-12')
+ [[ ! "${providersdepsnover[*]}" ]] || mapfile -t providers < <(CommArr -12 providers{depsnover,})
# skip if provided in dependency chain
repodepspkgsprovided=0
- for j in "${!providers[@]}"; do
- [[ " ${repodepspkgs[*]} " != *" ${providers[j]} "* ]] || repodepspkgsprovided=1
+ for j in "${providers[@]}"; do
+ [[ " ${repodepspkgs[*]} " != *" ${j} "* ]] || repodepspkgsprovided=1
done
- ((repodepspkgsprovided)) && continue
+ ((! repodepspkgsprovided)) || continue
# skip if already provided
if [[ "${providerspkgs[*]}" ]]; then
- providerspkgs=($(printf '%s|' "${providerspkgs[@]}"))
- providerspkgs=("${providerspkgs[@]%|}")
- mapfile -tO "${#provided[@]}" provided < <(expac -Ssl'\n' '%S' "^(${providerspkgs[*]})$")
+ mapfile -tO "${#provided[@]}" provided < <(IFS='|'; expac -Ssl'\n' '%S' "^(${providerspkgs[*]})$")
[[ " ${provided[*]} " != *" ${providersdeps[i]} "* ]] || continue
fi
@@ -717,7 +678,7 @@ ProviderChecks() {
providersnb="$(("${#providers[@]}" - 1))" # count from 0
while ((nb < 0 || nb >= "${#providers}")); do
printf '\n%s ' $"Enter a number (default=0):"
- case "${TERM}" in
+ case "${TERM:-}" in
dumb) read -r nb;;
*) read -rn "${#providersnb}" nb; printf '\n';;
esac
@@ -739,11 +700,8 @@ ProviderChecks() {
providerspkgs+=("${providers[nb]}")
done
- # add selected providers to repo deps
- repodepspkgs+=("${providerspkgs[@]}")
-
- # store for installation
- repoprovidersconflictingpkgs+=("${providerspkgs[@]}")
+ # add selected providers to repo deps and store for installation
+ repodepspkgs+=("${providerspkgs[@]}") repoprovidersconflictingpkgs+=("${providerspkgs[@]}")
FindDepsRepoProvider "${providerspkgs[@]}"
@@ -751,15 +709,19 @@ ProviderChecks() {
if [[ "${repodepspkgs[*]}" ]]; then
mapfile -t repodepspkgs < <(expac -S1 '%n' "${repodepspkgs[@]}" | sort -u)
mapfile -t repodepsSver < <(expac -S1 '%v' "${repodepspkgs[@]}")
- mapfile -t repodepsQver < <(expac -Q '%v' "${repodepspkgs[@]}")
+ if [[ "$("${pacman_conf[@]}" VerbosePkgLists)" ]]; then
+ for i in "${!repodepspkgs[@]}"; do
+ repodepsQver[i]="$(expac -Q '%v' "${repodepspkgs[i]}")"
+ done
+ fi
mapfile -t repodepsSrepo < <(expac -S1 '%r/%n' "${repodepspkgs[@]}")
fi
}
ConflictChecks() {
local allQprovides allQconflicts Aprovides Aconflicts aurconflicts aurAconflicts Qrequires i j
- local k l repodepsprovides repodepsconflicts checkedrepodepsconflicts repodepsconflictsname
- local repodepsconflictsver localver repoconflictingpkgs
+ local k l repodepsprovides repodepsconflicts repodepsconflictsname checkedrepodepsconflicts=()
+ local repodepsconflictsver localver repoconflictingpkgs repoconflicts=()
# global deps depsAname aurdepspkgs aurconflictingpkgs aurconflictingpkgskeep aurconflictingpkgsrm
# global depsQver repodepspkgs repoconflictingpkgskeep repoconflictingpkgsrm repoprovidersconflictingpkgs
printf '%s\n' $"looking for inter-conflicts..."
@@ -770,27 +732,25 @@ ConflictChecks() {
# AUR conflicts
Aprovides=("${depsAname[@]}")
- Aprovides+=($(GetInfo Provides))
- Aconflicts=($(GetInfo Conflicts))
+ mapfile -tO "${#Aprovides[@]}" Aprovides < <(GetInfo Provides)
+ mapfile -t Aconflicts < <(GetInfo Conflicts)
# remove AUR versioning
- Aprovides=("${Aprovides[@]%%[><=]*}")
- Aconflicts=("${Aconflicts[@]%%[><=]*}")
- mapfile -t aurconflicts < <(CommArr 'Aprovides' 'allQconflicts' '-12')
- mapfile -tO "${#aurconflicts[@]}" aurconflicts < <(CommArr 'Aconflicts' 'allQprovides' '-12')
- aurconflicts=($(printf '%s\n' "${aurconflicts[@]}" | sort -u))
+ Aprovides=("${Aprovides[@]%%[><=]*}") Aconflicts=("${Aconflicts[@]%%[><=]*}")
+ mapfile -t aurconflicts < <(CommArr -12 Aprovides allQconflicts; CommArr -12 Aconflicts allQprovides)
+ mapfile -t aurconflicts < <(SortArr "${aurconflicts[@]}")
for i in "${aurconflicts[@]}"; do
- unset aurAconflicts
- [[ " ${depsAname[*]} " = *" ${i} "* ]] && aurAconflicts=("${i}")
+ aurAconflicts=()
+ [[ " ${depsAname[*]} " != *" ${i} "* ]] || aurAconflicts=("${i}")
for j in "${depsAname[@]}"; do
- [[ " $(GetInfo Conflicts "${j}") " = *" ${i} "* ]] && aurAconflicts+=("${j}")
+ [[ " $(GetInfo Conflicts "${j}") " != *" ${i} "* ]] || aurAconflicts+=("${j}")
done
for j in "${aurAconflicts[@]}"; do
- unset Aprovides
- read -rd' ' k < <(expac -Qs '%n %P' "^${i}$")
- ((! installpkg)) && [[ " ${aurdepspkgs[*]} " != *" ${j} "* ]] && continue # download only
- [[ "${j}" = "${k}" || ! "${k}" ]] && continue # skip if reinstalling or if no conflict exists
+ Aprovides=()
+ read -r k < <(expac -Qs '%n' "^${i}$")
+ ((installpkg)) || [[ " ${aurdepspkgs[*]} " = *" ${j} "* ]] || continue # download only
+ [[ "${j}" != "${k}" && "${k}" ]] || continue # skip if reinstalling or if no conflict exists
Aprovides=("${j}")
if ((! noconfirm)) && [[ " ${aurconflictingpkgs[*]} " != *" ${k} "* ]]; then
@@ -799,12 +759,10 @@ ConflictChecks() {
aurconflictingpkgskeep+=("${j}")
aurconflictingpkgsrm+=("${k}")
for l in "${!depsAname[@]}"; do
- [[ " ${depsAname[l]} " != *"${k}"* ]] ||
- read -rd' ' depsQver[l] < <(expac -Qs '%v' "^${k}$")
+ [[ " ${depsAname[l]} " != *"${k}"* ]] || read -r depsQver[l] < <(expac -Qs '%v' "^${k}$")
done
- Aprovides+=($(GetInfo Provides "${j}"))
- # remove AUR versioning
- Aprovides=("${Aprovides[@]%%[><=]*}")
+ mapfile -tO "${#Aprovides[@]}" Aprovides < <(GetInfo Provides "${j}")
+ Aprovides=("${Aprovides[@]%%[><=]*}") # remove AUR versioning
[[ " ${Aprovides[*]} ${aurconflictingpkgsrm[*]} " = *" ${k} "* ]] || CheckRequires "${k}"
break
else
@@ -819,9 +777,8 @@ ConflictChecks() {
fi
fi
fi
- Aprovides+=($(GetInfo Provides "${j}"))
- # remove AUR versioning
- Aprovides=("${Aprovides[@]%%[><=]*}")
+ mapfile -tO "${#Aprovides[@]}" Aprovides < <(GetInfo Provides "${j}")
+ Aprovides=("${Aprovides[@]%%[><=]*}") # remove AUR versioning
[[ " ${Aprovides[*]} ${aurconflictingpkgsrm[*]} " = *" ${k} "* ]] || CheckRequires "${k}"
done
done
@@ -836,43 +793,38 @@ ConflictChecks() {
mapfile -t repodepsconflicts < <(expac -S1l'\n' '%H' "${repodepspkgs[@]}")
# versioning check
- unset checkedrepodepsconflicts
for i in "${!repodepsconflicts[@]}"; do
- unset repodepsconflictsname repodepsconflictsver localver
repodepsconflictsname="${repodepsconflicts[i]%%[><=]*}"
repodepsconflictsver="${repodepsconflicts[i]##*[><=]}"
localver="$(expac -Q '%v' "${repodepsconflictsname}")"
- repodepsconflictsverdiff="$(vercmp "${repodepsconflictsver}" "${localver}")"
+ repodepsconflictsverdiff="$(Vercmp "${repodepsconflictsver}" "${localver}")"
if [[ "${localver}" ]]; then
case "${repodepsconflicts[i]}" in
- *">="*) ((repodepsconflictsverdiff >= 0)) && continue;;
- *"<="*) ((repodepsconflictsverdiff <= 0)) && continue;;
- *">"*) ((repodepsconflictsverdiff > 0)) && continue;;
- *"<"*) ((repodepsconflictsverdiff < 0)) && continue;;
- *"="*) ((repodepsconflictsverdiff == 0)) && continue;;
+ *">="*) ((repodepsconflictsverdiff < 0)) || continue;;
+ *"<="*) ((repodepsconflictsverdiff > 0)) || continue;;
+ *">"*) ((repodepsconflictsverdiff <= 0)) || continue;;
+ *"<"*) ((repodepsconflictsverdiff >= 0)) || continue;;
+ *"="*) ((repodepsconflictsverdiff)) || continue;;
esac
checkedrepodepsconflicts+=("${repodepsconflictsname}")
fi
done
- mapfile -tO "${#repoconflicts[@]}" repoconflicts < <(CommArr 'repodepsprovides' 'allQconflicts' '-12')
+ mapfile -tO "${#repoconflicts[@]}" repoconflicts < <(CommArr -12 repodepsprovides allQconflicts)
mapfile -tO "${#repoconflicts[@]}" repoconflicts < \
- <(CommArr 'checkedrepodepsconflicts' 'allQprovides' '-12')
- repoconflicts=($(printf '%s\n' "${repoconflicts[@]}" | sort -u))
+ <(CommArr -12 checkedrepodepsconflicts allQprovides)
+ mapfile -t repoconflicts < <(SortArr "${repoconflicts[@]}")
fi
for i in "${repoconflicts[@]}"; do
- unset Qprovides
- read -rd' ' j < <(expac -Ss '%n %C %S' "^${i}$")
- read -rd' ' k < <(expac -Qs '%n %C %S' "^${i}$")
- [[ "${j}" = "${k}" || ! "${k}" ]] && continue # skip when no conflict with repopkgs
+ read -r j < <(expac -Ss '%n' "^${i}$")
+ read -r k < <(expac -Qs '%n' "^${i}$")
+ [[ "${j}" != "${k}" && "${k}" ]] || continue # skip when no conflict with repopkgs
if ((! noconfirm)) && [[ " ${repoconflictingpkgs[*]} " != *" ${k} "* ]]; then
if ! Proceed n $"%s and %s are in conflict (%s). Remove %s?" "${j}" "${k}" "${i}" "${k}"; then
- repoconflictingpkgs+=("${j}" "${k}")
- repoconflictingpkgskeep+=("${j}")
- repoconflictingpkgsrm+=("${k}")
- repoprovidersconflictingpkgs+=("${j}")
+ repoconflictingpkgs+=("${j}" "${k}") repoconflictingpkgskeep+=("${j}")
+ repoconflictingpkgsrm+=("${k}") repoprovidersconflictingpkgs+=("${j}")
mapfile -t Qprovides < <(expac -Ssl'\n' '%S' "^${k}$")
[[ " ${Qprovides[*]} ${repoconflictingpkgsrm[*]} " = *" ${k} "* ]] || CheckRequires "${k}"
break
@@ -894,29 +846,26 @@ ConflictChecks() {
}
ReinstallChecks() {
- local i depsAtmp
+ local i j depsAtmp=("${depsAname[@]}")
# global aurpkgs aurdepspkgs deps aurconflictingpkgs depsAname depsQver depsAver depsAood depsAmain
- depsAtmp=("${depsAname[@]}")
for i in "${!depsAtmp[@]}"; do
[[ " ${aurpkgs[*]} " = *" ${depsAname[i]} "* &&
" ${aurconflictingpkgs[*]} " != *" ${depsAname[i]} "* ]] || continue
- [[ "${depsQver[i]}" != ?('%') && "$(vercmp "${depsAver[i]}" "${depsQver[i]}")" -le 0 ]] || continue
+ [[ "${depsQver[i]}" != ?('%') && "$(Vercmp "${depsAver[i]}" "${depsQver[i]}")" -le 0 ]] || continue
((installpkg)) || [[ " ${aurdepspkgs[*]} " = *" ${depsAname[i]} "* ]] || continue
if [[ "${depsAname[i]}" = *${vcs} ]]; then
warn $"%s latest revision -- fetching" "${colorW}${depsAname[i]}${reset}"
+ elif ((needed)); then
+ warn $"%s-%s is up to date -- skipping" "${colorW}${depsAname[i]}" "${depsQver[i]}${reset}"
+ for j in "${!deps[@]}"; do [[ "${deps[j]}" != "${depsAname[i]}" ]] || unset -v 'deps[j]'; done
+ deps=("${deps[@]}")
+ unset -v 'depsAname[i]' 'depsQver[i]' 'depsAver[i]' 'depsAood[i]' 'depsAmain[i]'
else
- if ((! needed)); then
- warn $"%s-%s is up to date -- reinstalling" "${colorW}${depsAname[i]}" "${depsQver[i]}${reset}"
- else
- warn $"%s-%s is up to date -- skipping" "${colorW}${depsAname[i]}" "${depsQver[i]}${reset}"
- mapfile -t deps < <(printf ' %s \n' "${deps[@]}")
- deps=($(printf '%s\n' "${deps[@]// ${depsAname[i]} /}"))
- unset 'depsAname[i]' 'depsQver[i]' 'depsAver[i]' 'depsAood[i]' 'depsAmain[i]'
- fi
+ warn $"%s-%s is up to date -- reinstalling" "${colorW}${depsAname[i]}" "${depsQver[i]}${reset}"
fi
done
- ((needed)) && depsAname=("${depsAname[@]}") && depsQver=("${depsQver[@]}") &&
- depsAver=("${depsAver[@]}") && depsAood=("${depsAood[@]}") && depsAmain=("${depsAmain[@]}")
+ depsAname=("${depsAname[@]}") depsQver=("${depsQver[@]}") depsAver=("${depsAver[@]}")
+ depsAood=("${depsAood[@]}") depsAmain=("${depsAmain[@]}")
NothingToDo "${deps[@]}"
}
@@ -924,7 +873,7 @@ OutOfDateChecks() {
local i
# global depsAname depsAver depsAood
for i in "${!depsAname[@]}"; do
- (("${depsAood[i]}" > 0)) &&
+ ((depsAood[i] <= 0)) ||
warn $"%s-%s has been flagged %sout of date%s on %s" "${colorW}${depsAname[i]}" "${depsAver[i]}${reset}" "${colorR}" "${reset}" "${colorY}$(printf '%(%c)T' "${depsAood[i]}")${reset}"
done
}
@@ -933,8 +882,8 @@ OrphanChecks() {
local i
# global depsAname depsAver depsAmain
for i in "${!depsAname[@]}"; do
- [[ "${depsAmain[i]}" = 'null' || ! "${depsAmain[i]}" ]] &&
- warn $"%s-%s is %sorphaned%s in AUR" "${colorW}${depsAname[i]}" "${depsAver[i]}${reset}" "${colorR}" "${reset}"
+ [[ "${depsAmain[i]}" != '%' ]] || warn $"%s-%s is %sorphaned%s in AUR" \
+ "${colorW}${depsAname[i]}" "${depsAver[i]}${reset}" "${colorR}" "${reset}"
done
}
@@ -949,10 +898,10 @@ Prompt() {
mapfile -t binarymsize < <(expac -S1 '%m' "${repodepspkgs[@]}")
sumk=0 summ=0
for i in "${!repodepspkgs[@]}"; do
- GetBuiltPkg "${repodepspkgs[i]}-${repodepsSver[i]}" "$(pacman-conf CacheDir)"
- [[ "${builtpkg}" ]] && binaryksize[i]=0
- sumk="$((sumk + "${binaryksize[i]}"))"
- summ="$((summ + "${binarymsize[i]}"))"
+ GetBuiltPkg "${repodepspkgs[i]}-${repodepsSver[i]}" "$("${pacman_conf[@]}" CacheDir)"
+ [[ ! "${builtpkg}" ]] || binaryksize[i]=0
+ ((sumk += binaryksize[i]))
+ ((summ += binarymsize[i]))
done
sumk="$((sumk / 1048576)).$((sumk / 1024 % 1024 * 100 / 1024))"
summ="$((summ / 1048576)).$((summ / 1024 % 1024 * 100 / 1024))"
@@ -960,30 +909,29 @@ Prompt() {
# cached packages check
for i in "${!depsAname[@]}"; do
- [[ ! "${PKGDEST}" ]] || ((rebuild)) && break
+ [[ "${PKGDEST}" && rebuild -eq 0 ]] || break
GetBuiltPkg "${depsAname[i]}-${depsAver[i]}" "${PKGDEST}"
- [[ "${builtpkg}" ]] && cachedpkgs+=("${depsAname[i]}") depsAcached[i]='('$"cached"')' || depsAcached[i]=''
- unset builtpkg
+ [[ "${builtpkg}" ]] &&
+ cachedpkgs+=("${depsAname[i]}") depsAcached[i]='('$"cached"')' || depsAcached[i]=''
+ builtpkg=''
done
- if [[ "$(pacman-conf VerbosePkgLists)" ]]; then
- straurname=$"AUR Packages (${#deps[@]})"; strreponame=$"Repo Packages (${#repodepspkgs[@]})"
- stroldver=$"Old Version"; strnewver=$"New Version"; strsize=$"Download Size"
+ if [[ "$("${pacman_conf[@]}" VerbosePkgLists)" ]]; then
+ straurname=$"AUR Packages ""(${#deps[@]})" strreponame=$"Repo Packages ""(${#repodepspkgs[@]})"
+ stroldver=$"Old Version" strnewver=$"New Version" strsize=$"Download Size"
depsArepo=("${depsAname[@]/#/aur/}")
lname="$(GetLength "${depsArepo[@]}" "${repodepsSrepo[@]}" "${straurname}" "${strreponame}")"
lver="$(GetLength "${depsQver[@]}" "${depsAver[@]}" "${repodepsQver[@]}" "${repodepsSver[@]}" "${stroldver}" "${strnewver}")"
lsize="$(GetLength "${strsize}")"
# local version column cleanup
- for i in "${!deps[@]}"; do
- [[ "${depsQver[i]}" != '%' ]] || unset 'depsQver[i]'
- done
+ for i in "${!deps[@]}"; do [[ "${depsQver[i]}" != '%' ]] || depsQver[i]=''; done
# show detailed output
printf "\n${colorW}%-${lname}s %-${lver}s %-${lver}s${reset}\n\n" \
"${straurname}" "${stroldver}" "${strnewver}"
for i in "${!deps[@]}"; do
printf "%-${lname}s ${colorR}%-${lver}s${reset} ${colorG}%-${lver}s${reset} %${lsize}s\n" \
- "${depsArepo[i]}" "${depsQver[i]}" "${depsAver[i]}" "${depsAcached[i]}"
+ "${depsArepo[i]}" "${depsQver[i]}" "${depsAver[i]}" "${depsAcached[i]-}"
done
if [[ "${repodepspkgs[*]}" ]]; then
@@ -994,24 +942,24 @@ Prompt() {
"${strreponame}" "${stroldver}" "${strnewver}" "${strsize}"
for i in "${!repodepspkgs[@]}"; do
printf "%-${lname}s ${colorR}%-${lver}s${reset} ${colorG}%-${lver}s${reset} %${lsize}s\n" \
- "${repodepsSrepo[i]}" "${repodepsQver[i]}" "${repodepsSver[i]}" $"${binarysize[i]} MiB"
+ "${repodepsSrepo[i]}" "${repodepsQver[i]}" "${repodepsSver[i]}" "${binarysize[i]}"$" MiB"
done
fi
else
# show version
for i in "${!deps[@]}"; do
- depsver="${depsver-}${depsAname[i]}-${depsAver[i]} "
+ depsver+="${depsAname[i]}-${depsAver[i]} "
done
for i in "${!repodepspkgs[@]}"; do
- repodepspkgsver="${repodepspkgsver-}${repodepspkgs[i]}-${repodepsSver[i]} "
+ repodepspkgsver+="${repodepspkgs[i]}-${repodepsSver[i]} "
done
- printf "\n${colorW}%-16s${reset} %s\n" $"AUR Packages (${#deps[@]})" "${depsver}"
- [[ "${repodepspkgs[*]}" ]] &&
- printf "${colorW}%-16s${reset} %s\n" $"Repo Packages (${#repodepspkgs[@]})" "${repodepspkgsver}"
+ printf "\n${colorW}%-16s${reset} %s\n" $"AUR Packages ""(${#deps[@]})" "${depsver}"
+ [[ ! "${repodepspkgs[*]}" ]] ||
+ printf "${colorW}%-16s${reset} %s\n" $"Repo Packages ""(${#repodepspkgs[@]})" "${repodepspkgsver}"
fi
if [[ "${repodepspkgs[*]}" ]]; then
- strrepodlsize=$"Repo Download Size:"; strrepoinsize=$"Repo Installed Size:"; strsumk="${sumk}"$"MiB"
+ strrepodlsize=$"Repo Download Size:" strrepoinsize=$"Repo Installed Size:" strsumk="${sumk}"$"MiB"
strsumm="${summ}"$"MiB" lreposizelabel="$(GetLength "${strrepodlsize}" "${strrepoinsize}")"
lreposize="$(GetLength "${strsumk}" "${strsumm}")"
printf "\n${colorW}%-${lreposizelabel}s${reset} %${lreposize}s\n" "${strrepodlsize}" "${strsumk}"
@@ -1027,7 +975,7 @@ Prompt() {
}
DownloadPkgs() {
- local i
+ local i basepkgstmp=()
# global basepkgs
info $"%sRetrieving package(s)...%s" "${colorW}" "${reset}"
GetPkgbase "$@"
@@ -1035,30 +983,27 @@ DownloadPkgs() {
# no results check
[[ "${basepkgs[*]}" ]] || error $"no results found" "${E_INSTALL_DEPS_FAILED}"
- # reset
- for i in "${basepkgs[@]}"; do
- if [[ -d "${clonedir}/${i}" ]]; then
- git -C "${clonedir}/${i}" reset --hard HEAD -q # updated pkgver of vcs packages block pull
- [[ "${displaybuildfiles}" = 'diff' ]] &&
- git -C "${clonedir}/${i}" rev-parse HEAD >"${clonedir}/${i}/.git/HEAD.prev"
- fi
- done
+ # record previous HEAD for diff viewing
+ if [[ "${displaybuildfiles}" = 'diff' ]]; then
+ basepkgstmp=("${basepkgs[@]/#/${clonedir}/}")
+ for i in "${basepkgstmp[@]/%//}"; do
+ git -C "${i}" rev-parse HEAD >"${i}/.git/HEAD.prev"
+ done
+ fi
- # clone
- auracle -C "${clonedir}" clone "$@" >/dev/null ||
- error $"failed to retrieve packages" "${E_INSTALL_DEPS_FAILED}"
+ auracle -C "${clonedir}" clone "$@" >/dev/null || error $"failed to retrieve packages" 1 # clone
}
EditPkgs() {
local viewed=0 i j erreditpkg prev
# global cachedpkgs installscripts editor
- ((noedit)) && return
+ ((! noedit)) || return
for i in "$@"; do
- [[ " ${cachedpkgs[*]} " = *" ${i} "* ]] && continue
+ [[ " ${cachedpkgs[*]} " != *" ${i} "* ]] || continue
GetInstallScripts "${i}"
if ((! pace)); then
if [[ "${displaybuildfiles}" = 'diff' && -e "${clonedir}/${i}/.git/HEAD.prev" ]]; then
- prev="$(<"${clonedir}/${i}/.git/HEAD.prev")"
+ read -r prev <"${clonedir}/${i}/.git/HEAD.prev"
# show diff
if git -C "${clonedir}/${i}" diff --quiet --no-ext-diff "${prev}" -- . ':!\.SRCINFO'; then
warn $"%s build files are up-to-date -- skipping" "${colorW}${i}${reset}"
@@ -1086,7 +1031,7 @@ EditPkgs() {
if [[ -e "${clonedir}/${i}/${j}" ]]; then
"${editor}" "${clonedir}/${i}/${j}" &&
info $"%s script viewed" "${colorW}${j}${reset}" ||
- erreditpkg+=("${i}")
+ erreditpkg+=("${i}")
else
error $"Could not open %s script" "${colorW}${j}${reset}" "${E_MISSING_FILE}"
fi
@@ -1116,9 +1061,8 @@ EditPkgs() {
done
if [[ "${erreditpkg[*]}" ]]; then
- for i in "${erreditpkg[@]}"; do
- fail $"%s errored on exit" "${colorW}${i}${reset}"
- done
+ erreditpkg=("${erreditpkg[@]/#/${colorW}}")
+ fail $"%s errored on exit" "${erreditpkg[@]/%/${reset}}"
exit "${E_FAIL}"
fi
@@ -1132,10 +1076,10 @@ EditPkgs() {
}
MakePkgs() {
- local i j k oldorphanpkgs neworphanpkgs orphanpkgs oldoptionalpkgs newoptionalpkgs optionalpkgs
- local errinstall pkgsdepslist vcsclients vcschecked aurpkgsAver aurpkgsQver built{,deps}pkgs
- local basepkgsupdate checkpkgsdepslist isaurdeps makedeps {basepkgs,pkgsdeps}rev
- # global deps basepkgs sudoloop pkgsbase pkgsdeps aurpkgs aurdepspkgs builtpkg errmakepkg
+ local oldorphanpkgs orphanpkgs oldoptionalpkgs optionalpkgs pkgsdepslist
+ local vcsclients vcschecked aurpkgsAver aurpkgsQver built{,deps}pkgs
+ local checkpkgsdepslist isaurdeps makedeps errmakepkgs i j k l
+ # global deps basepkgs sudoloop pkgsbase pkgsdeps aurpkgs aurdepspkgs builtpkg
# global repoprovidersconflictingpkgs
# download
@@ -1143,86 +1087,78 @@ MakePkgs() {
EditPkgs "${basepkgs[@]}"
# current orphan and optional packages
- mapfile -t oldorphanpkgs < <("${pacmanbin}" -Qdtq)
- mapfile -t oldoptionalpkgs < <("${pacmanbin}" -Qdttq)
- mapfile -t oldoptionalpkgs < <(CommArr 'oldorphanpkgs' 'oldoptionalpkgs' '-13')
+ mapfile -t oldorphanpkgs < <("${pacman}" -Qtdq)
+ mapfile -t oldoptionalpkgs < <("${pacman}" -Qttdq)
+ mapfile -t oldoptionalpkgs < <(CommArr -13 oldorphanpkgs oldoptionalpkgs)
# initialize sudo
- if sudo -n "${pacmanbin}" -V &>/dev/null || sudo -v; then
- [[ "${sudoloop}" = 'true' ]] && SudoV &
+ if sudo -n "${pacman}" -V &>/dev/null || sudo -v; then
+ ((! sudoloop)) || SudoV &
fi
# split packages support
for i in "${!pkgsbase[@]}"; do
for j in "${!deps[@]}"; do
- if [[ "${pkgsbase[i]}" = "${pkgsbase[j]}" && "${pkgsdeps[*]}" != *",${deps[j]}"?(,*) ]]; then
+ [[ "${pkgsbase[i]}" != "${pkgsbase[j]}" || "${pkgsdeps[*]}" = *",${deps[j]}"?(,*) ]] ||
pkgsdeps[i]+=",${deps[j]}"
- fi
done
done
pkgsdeps=("${pkgsdeps[@]#,}") # remove empty array indices and leading ','
# reverse deps order
- for i in "${!basepkgs[@]}"; do
- basepkgsrev[i]="${basepkgs[-i-1]}"
- done
- basepkgs=("${basepkgsrev[@]}")
- for i in "${!pkgsdeps[@]}"; do
- pkgsdepsrev[i]="${pkgsdeps[-i-1]}"
- done
- pkgsdeps=("${pkgsdepsrev[@]}")
+ mapfile -t basepkgs < <(for i in "${!basepkgs[@]}"; do printf '%s\n' "${basepkgs[-i-1]}"; done)
+ mapfile -t pkgsdeps < <(for i in "${!pkgsdeps[@]}"; do printf '%s\n' "${pkgsdeps[-i-1]}"; done)
# integrity check
for i in "${!basepkgs[@]}"; do
- IFS=',' read -ra pkgsdepslist <<< "${pkgsdeps[i]}" # get split packages list
+ mapfile -td',' pkgsdepslist < <(printf '%s' "${pkgsdeps[i]}") # get split packages list
# cache check
- unset builtpkg
+ builtpkg=''
if [[ "${basepkgs[i]}" != *${vcs} ]]; then
for j in "${pkgsdepslist[@]}"; do
- [[ "${PKGDEST}" ]] && ((! rebuild)) &&
+ [[ ! "${PKGDEST}" ]] || ((rebuild)) ||
GetBuiltPkg "${j}-$(GetInfo Version "${j}")" "${PKGDEST}"
done
fi
# install vcs clients (checking pkgbase extension only does not take fetching specific
# commit into account)
- unset vcsclients
- makedeps=($(GetInfo MakeDepends "${basepkgs[i]}"))
- for k in git subversion mercurial bzr cvs darcsl; do
- [[ " ${makedeps[*]} " = *" ${k} "* ]] && vcsclients+=("${k}")
+ vcsclients=()
+ mapfile -t makedeps < <(GetInfo MakeDepends "${basepkgs[i]}")
+
+ for j in git subversion mercurial bzr cvs darcsl; do
+ [[ " ${makedeps[*]} " != *" ${j} "* ]] || vcsclients+=("${j}")
done
- unset makedeps
for j in "${vcsclients[@]}"; do
if [[ " ${vcschecked[*]} " != *" ${j} "* ]]; then
- expac -Qs '' "^${j}$" || sudo "${pacmanbin}" -S --asdeps --noconfirm -- "${j}"
+ expac -Qs '' "^${j}$" || sudo "${pacman}" -S --asdeps --noconfirm "${j}"
vcschecked+=("${j}")
fi
done
if [[ ! "${builtpkg-}" ]] || ((rebuild)); then
- cd "${clonedir:?}/${basepkgs[i]}" || exit "${E_MISSING_FILE}"
+ cd_safe "${clonedir}/${basepkgs[i]}"
info $"Checking %s integrity..." "${colorW}${pkgsdeps[i]}${reset}"
- if [[ "${silent}" = 'true' ]]; then
- makepkg -f --verifysource "${makeopts[@]}" &>/dev/null || errmakepkg+=("${pkgsdeps[i]}")
+ if ((silent)); then
+ makepkg -f --verifysource "${makeopts[@]}" &>/dev/null || errmakepkgs+=("${pkgsdeps[i]}")
else
- makepkg -f --verifysource "${makeopts[@]}" >/dev/null || errmakepkg+=("${pkgsdeps[i]}")
+ makepkg -f --verifysource "${makeopts[@]}" >/dev/null || errmakepkgs+=("${pkgsdeps[i]}")
fi
# extraction, prepare and pkgver update
info $"Preparing %s..." "${colorW}${pkgsdeps[i]}${reset}"
- if [[ "${silent}" = 'true' ]]; then
- makepkg -od --skipinteg "${makeopts[@]}" &>/dev/null || errmakepkg+=("${pkgsdeps[i]}")
+ if ((silent)); then
+ makepkg -od --skipinteg "${makeopts[@]}" &>/dev/null || errmakepkgs+=("${pkgsdeps[i]}")
else
- makepkg -od --skipinteg "${makeopts[@]}" || errmakepkg+=("${pkgsdeps[i]}")
+ makepkg -od --skipinteg "${makeopts[@]}" || errmakepkgs+=("${pkgsdeps[i]}")
fi
fi
done
- if [[ "${errmakepkg[*]}" || "${errinstall[*]}" ]]; then
- for i in "${errmakepkg[@]}"; do
- fail $"failed to verify integrity or prepare %s package" "${colorW}${i}${reset}"
- done
+ if [[ "${errmakepkgs[*]}" ]]; then
+ errmakepkgs=("${errmakepkgs[@]/#/${colorW}}")
+ fail $"failed to verify integrity or prepare %s package" "${errmakepkgs[@]/%/${reset}}"
# remove sudo lock
- rm -f "${tmpdir:?}/pacaur.sudov.lck"
+ rm -f "${tmpdir}/pacaur.sudov.lck"
exit "${E_FAIL}"
fi
@@ -1231,35 +1167,35 @@ MakePkgs() {
# set build lock
[[ ! -e "${tmpdir}/pacaur.build.lck" ]] || error $"pacaur.build.lck exists in %s" "${tmpdir}" "${E_FAIL}"
- : >"${tmpdir}/pacaur.build.lck"
+ :>"${tmpdir}/pacaur.build.lck"
# install provider packages and repo conflicting packages that makepkg --noconfirm cannot handle
if [[ "${repoprovidersconflictingpkgs[*]}" ]]; then
info $"Installing %s dependencies..." "${colorW}${repoprovidersconflictingpkgs[*]}${reset}"
- sudo "${pacmanbin}" -S "${repoprovidersconflictingpkgs[@]}" --ask 36 --asdeps --noconfirm
+ sudo "${pacman}" -S "${repoprovidersconflictingpkgs[@]}" --ask 36 --asdeps --noconfirm
fi
# main
for i in "${!basepkgs[@]}"; do
- IFS=',' read -ra pkgsdepslist <<< "${pkgsdeps[i]}" # get split packages list
+ mapfile -td',' pkgsdepslist < <(printf '%s' "${pkgsdeps[i]}") # get split packages list
- cd "${clonedir}/${basepkgs[i]}" || exit "${E_MISSING_FILE}"
+ cd_safe "${clonedir}/${basepkgs[i]}"
# retrieve updated version
- mapfile -td'-' k < <(makepkg --packagelist); aurpkgsAver="${k[-3]}-${k[-2]}"; unset k
+ mapfile -td'-' k < <(makepkg --packagelist); aurpkgsAver="${k[-3]}-${k[-2]}"; unset -v k
# build devel if necessary only (supported protocols only)
if [[ "${basepkgs[i]}" = *${vcs} ]]; then
# check split packages update
- unset basepkgsupdate checkpkgsdepslist
+ checkpkgsdepslist=()
for j in "${pkgsdepslist[@]}"; do
- read -rd' ' < <(expac -Qs '%v' "^${j}$") aurpkgsQver
+ aurpkgsQver="$(expac -Qs '%v' "^${j}$")"
if ((needed && ! rebuild)) &&
- [[ "${aurpkgsQver}" && "$(vercmp "${aurpkgsQver}" "${aurpkgsAver}")" -ge 0 ]]; then
- warn $"%s is up-to-date -- skipping" "${colorW}${j}${reset}" && continue
+ [[ "${aurpkgsQver}" && "$(Vercmp "${aurpkgsQver}" "${aurpkgsAver}")" -ge 0 ]]; then
+ warn $"%s is up-to-date -- skipping" "${colorW}${j}${reset}"; continue
else
- basepkgsupdate='true'; checkpkgsdepslist+=("${j}")
+ checkpkgsdepslist+=("${j}")
fi
done
- if [[ "${basepkgsupdate}" ]]; then
+ if [[ "${checkpkgsdepslist[*]}" ]]; then
pkgsdepslist=("${checkpkgsdepslist[@]}")
else
continue
@@ -1268,21 +1204,21 @@ MakePkgs() {
# check package cache
for j in "${pkgsdepslist[@]}"; do
- unset builtpkg
- [[ "${PKGDEST}" ]] && ((! rebuild)) && GetBuiltPkg "${j}-${aurpkgsAver}" "${PKGDEST}"
+ builtpkg=''
+ [[ ! "${PKGDEST}" ]] || ((rebuild)) || GetBuiltPkg "${j}-${aurpkgsAver}" "${PKGDEST}"
if [[ "${builtpkg}" ]]; then
if [[ " ${aurdepspkgs[*]} " = *" ${j} "* ]] || ((installpkg)); then
info $"Installing %s cached package..." "${colorW}${j}${reset}"
- sudo "${pacmanbin}" -U --ask 36 --noconfirm "${pacopts[@]//--quiet}" -- "${builtpkg}"
+ sudo "${pacman}" -U --ask 36 --noconfirm "${pacopts[@]}" "${builtpkg}"
[[ " ${aurpkgs[*]} " = *" ${j} "* ]] ||
- sudo "${pacmanbin}" -D "${j}" --asdeps "${pacopts[@]}" &>/dev/null
+ sudo "${pacman}" -D "${j}" --asdeps "${pacopts[@]}" &>/dev/null
else
warn $"Package %s already available in cache" "${colorW}${j}${reset}"
fi
pkgsdeps=("${pkgsdeps[@]/#${j},}"); pkgsdeps=("${pkgsdeps[@]/%,${j}}")
pkgsdeps=("${pkgsdeps[@]//,${j},/,}")
for k in "${!pkgsdeps[@]}"; do
- [[ "${pkgsdeps[k]}" = "${j}" ]] && pkgsdeps[k]='%'
+ [[ "${pkgsdeps[k]}" != "${j}" ]] || pkgsdeps[k]='%'
done
continue
fi
@@ -1298,13 +1234,13 @@ MakePkgs() {
if ((! installpkg)); then
isaurdeps=0
for j in "${pkgsdepslist[@]}"; do
- [[ " ${aurdepspkgs[*]} " = *" ${j} "* ]] && isaurdeps=1
+ [[ " ${aurdepspkgs[*]} " != *" ${j} "* ]] || isaurdeps=1
done
- ((isaurdeps)) && makeopts+=('-r')
+ ((! isaurdeps)) || makeopts+=('-r')
fi
# skip install for packages that fail to build
- if [[ "${silent}" = 'true' ]]; then
+ if ((silent)); then
makepkg -sefc "${makeopts[@]}" --noconfirm &>/dev/null ||
{ errmakepkgs+=("${pkgsdeps[i]}"); continue; }
else
@@ -1312,13 +1248,13 @@ MakePkgs() {
fi
# retrieve filename
- unset builtpkgs builtdepspkgs
+ builtpkgs=() builtdepspkgs=()
for j in "${pkgsdepslist[@]}"; do
- unset builtpkg
+ builtpkg=''
if [[ "${PKGDEST}" ]]; then
GetBuiltPkg "${j}-${aurpkgsAver}" "${PKGDEST}"
else
- GetBuiltPkg "${j}-${aurpkgsAver}" "${clonedir:?}/${basepkgs[i]}"
+ GetBuiltPkg "${j}-${aurpkgsAver}" "${clonedir}/${basepkgs[i]}"
fi
[[ " ${aurdepspkgs[*]} " = *" ${j} "* ]] && builtdepspkgs+=("${builtpkg}") ||
builtpkgs+=("${builtpkg}")
@@ -1327,16 +1263,16 @@ MakePkgs() {
# install
if ((installpkg)) || [[ ! "${builtpkgs[*]}" ]]; then
info $"Installing %s package(s)..." "${colorW}${pkgsdeps[i]}${reset}"
- sudo "${pacmanbin}" -U "${builtdepspkgs[@]}" "${builtpkgs[@]}" \
- --ask 36 "${pacopts[@]//--quiet}" --noconfirm
+ sudo "${pacman}" -U "${builtdepspkgs[@]}" "${builtpkgs[@]}" \
+ --ask 36 "${pacopts[@]}" --noconfirm
fi
# set dep status
if ((installpkg)); then
for j in "${pkgsdepslist[@]}"; do
- [[ " ${aurpkgs[*]} " = *" ${j} "* ]] || sudo "${pacmanbin}" -D "${j}" --asdeps &>/dev/null
- ((asdeps)) && sudo "${pacmanbin}" -D "${j}" --asdeps &>/dev/null
- ((asexplicit)) && sudo "${pacmanbin}" -D "${j}" --asexplicit &>/dev/null
+ [[ " ${aurpkgs[*]} " = *" ${j} "* ]] || sudo "${pacman}" -D "${j}" --asdeps &>/dev/null
+ ((! asdeps)) || sudo "${pacman}" -D "${j}" --asdeps &>/dev/null
+ ((! asexplicit)) || sudo "${pacman}" -D "${j}" --asexplicit &>/dev/null
done
fi
done
@@ -1345,73 +1281,65 @@ MakePkgs() {
if ((! installpkg)); then
[[ ! "${aurdepspkgs[*]}" ]] || mapfile -t aurdepspkgs < <(expac -Q '%n' "${aurdepspkgs[@]}")
[[ ! "${aurdepspkgs[*]}" ]] || { info $"Removing installed AUR dependencies..."
- sudo "${pacmanbin}" -Rsn "${aurdepspkgs[@]}" --noconfirm; }
+ sudo "${pacman}" -Rsn "${aurdepspkgs[@]}" --noconfirm; }
# re-add removed conflicting packages
- [[ ! "${aurconflictingpkgsrm[*]}${repoconflictingpkgsrm[*]}" ]] || sudo "${pacmanbin}" -S \
+ [[ ! "${aurconflictingpkgsrm[*]}${repoconflictingpkgsrm[*]}" ]] || sudo "${pacman}" -S \
"${aurconflictingpkgsrm[@]}" "${repoconflictingpkgsrm[@]}" --ask 36 --asdeps --needed --noconfirm
fi
- # remove locks
- rm "${tmpdir:?}/pacaur.build.lck"
- rm -f "${tmpdir:?}/pacaur.sudov.lck"
+ rm -f "${tmpdir}/pacaur."{'build','sudov'}'.lck' # remove locks
# new orphan and optional packages check
- mapfile -t orphanpkgs < <("${pacmanbin}" -Qdtq)
- mapfile -t neworphanpkgs < <(CommArr 'oldorphanpkgs' 'orphanpkgs' '-13')
- for i in "${neworphanpkgs[@]}"; do
+ mapfile -t orphanpkgs < <("${pacman}" -Qdtq)
+ while read -r i; do
warn $"%s is now an %sorphan%s package" "${colorW}${i}${reset}" "${colorY}" "${reset}"
- done
- mapfile -t optionalpkgs < <("${pacmanbin}" -Qdttq)
- mapfile -t optionalpkgs < <(CommArr 'orphanpkgs' 'optionalpkgs' '-13')
- mapfile -t newoptionalpkgs < <(CommArr 'oldoptionalpkgs' 'optionalpkgs' '-13')
- for i in "${newoptionalpkgs[@]}"; do
+ done < <(CommArr -13 oldorphanpkgs orphanpkg)
+ mapfile -t optionalpkgs < <("${pacman}" -Qdttq)
+ mapfile -t optionalpkgs < <(CommArr -13 orphanpkgs optionalpkgs)
+ while read -r i; do
warn $"%s is now an %soptional%s package" "${colorW}${i}${reset}" "${colorY}" "${reset}"
- done
+ done < <(CommArr -13 oldoptionalpkgs optionalpkgs)
# makepkg and install failure check
- if [[ "${errmakepkg[*]}" ]]; then
- for i in "${errmakepkg[@]}"; do
- fail $"failed to build %s package(s)" "${colorW}${i}${reset}"
- done
+ if [[ "${errmakepkgs[*]}" ]]; then
+ errmakepkgs=("${errmakepkgs[@]/#/${colorW}}")
+ fail $"failed to build %s package(s)" "${errmakepkgs[@]/%/${reset}}"
exit "${E_PACKAGE_FAILED}"
fi
- [[ "${errinstall[*]}" ]] && exit "${E_INSTALL_FAILED}"
}
CleanCache() {
- local i cachepkgs foreignpkgs foreignpkgsbase
- mapfile -t cachedir < <(pacman-conf CacheDir)
+ local cachepkgs foreignpkgs foreignpkgsbase
+ mapfile -t cachedir < <("${pacman_conf[@]}" CacheDir)
[[ ! "${cachedir[*]}" ]] || cachedir=("${cachedir[@]%/}") PKGDEST="${PKGDEST%/}"
if [[ "${PKGDEST}" && " ${cachedir[*]} " != *" ${PKGDEST} "* ]]; then
- ((ccount == 1)) && printf '\n%s\n %s\n' $"Packages to keep:" $"All locally installed packages"
+ ((ccount != 1)) || printf '\n%s\n %s\n' $"Packages to keep:" $"All locally installed packages"
printf '\n%s %s\n' $"AUR cache directory:" "${PKGDEST}"
if ((ccount == 1)); then
if Proceed y $"Do you want to remove all other packages from AUR cache?"; then
printf '%s\n' $"removing old packages from cache..."
- cachepkgs=("${PKGDEST:?}"/*); cachepkgs=("${cachepkgs[@]##*/}")
+ cachepkgs=("${PKGDEST}/"*) cachepkgs=("${cachepkgs[@]##*/}")
for i in "${cachepkgs[@]%-*}"; do
- [[ "${i}" != "$(expac -Q '%n-%v' "${i%-*-*}")" ]] && rm "${PKGDEST:?}/${i}"-*
+ [[ "${i}" = "$(expac -Q '%n-%v' "${i%-*-*}")" ]] || rm "${PKGDEST}/${i}-"*
done
fi
else
Proceed n $"Do you want to remove ALL files from AUR cache?" ||
{ printf '%s\n' $"removing all files from AUR cache..."
- rm "${PKGDEST:?}/"* &>/dev/null; }
+ rm "${PKGDEST}/"* &>/dev/null; }
fi
fi
if [[ -d "${SRCDEST}" ]]; then
- ((ccount == 1)) &&
- printf '\n%s\n %s\n' $"Sources to keep:" $"All development packages sources"
+ ((ccount != 1)) || printf '\n%s\n %s\n' $"Sources to keep:" $"All development packages sources"
printf '\n%s %s\n' $"AUR source cache directory:" "${SRCDEST}"
- if ((ccount == 1)); then
- Proceed y $"Do you want to remove all non development files from AUR source cache?" &&
- printf '%s\n' $"removing non development files from source cache..." &&
- rm -f "${SRCDEST:?}"/* &>/dev/null
- else
- Proceed n $"Do you want to remove ALL files from AUR source cache?" ||
- printf '%s\n' $"removing all files from AUR source cache..." &&
- rm -rf "${SRCDEST:?}"/*
+ if ((ccount == 1)) &&
+ Proceed y $"Do you want to remove all non development files from AUR source cache?"; then
+ printf '%s\n' $"removing non development files from source cache..."
+ rm -f "${SRCDEST}/"* &>/dev/null
+ elif ! Proceed n $"Do you want to remove ALL files from AUR source cache?"; then
+ printf '%s\n' $"removing all files from AUR source cache..."
+ rm -rf "${SRCDEST:?}/"*
fi
fi
if [[ -d "${clonedir}" ]]; then
@@ -1424,23 +1352,23 @@ CleanCache() {
fi
printf '\n%s %s\n' $"AUR clone directory:" "${clonedir}"
if ((ccount == 1)); then
- mapfile -t foreignpkgs < <("${pacmanbin}" -Qmq)
+ mapfile -t foreignpkgs < <("${pacman}" -Qmq)
mapfile -t foreignpkgsbase < <(expac -Q '%e' "${foreignpkgs[@]}")
# get target
if [[ "${pkgs[*]}" ]]; then
mapfile -t pkgsbase < <(expac -Q '%e' "${pkgs[@]}")
- mapfile -t aurpkgsbase < <(CommArr 'pkgsbase' 'foreignpkgsbase' '-12')
+ mapfile -t aurpkgsbase < <(CommArr -13 pkgsbase foreignpkgsbase)
if Proceed y $"Do you want to remove %s clones from AUR clone directory?" \
"${aurpkgsbase[*]}"; then
printf '%s\n\n' $"removing uninstalled clones from AUR clone cache..."
for i in "${aurpkgsbase[@]}"; do
- [[ -d "${clonedir}/${i}" ]] && rm -rf "${clonedir:?}/${i}"
+ [[ ! -d "${clonedir}/${i}" ]] || rm -rf "${clonedir:?}/${i}"
done
fi
else
if Proceed y $"Do you want to remove all uninstalled clones from AUR clone directory?"; then
printf '%s\n\n' $"removing uninstalled clones from AUR clone cache..."
- for i in "${clonedir:?}/"*; do
+ for i in "${clonedir}/"*; do
[[ ! -d "${i}" || " ${foreignpkgsbase[*]} " = *" ${i} "* ]] ||
rm -rf "${clonedir:?}/${i}"
done
@@ -1448,8 +1376,8 @@ CleanCache() {
if [[ ! "${PKGDEST}" || ! "${SRCDEST}" ]]; then
if Proceed y $"Do you want to remove all untracked files from AUR clone directory?"; then
printf '%s\n' $"removing untracked files from AUR clone cache..."
- for i in "${clonedir:?}/"*; do
- [[ -d "${i}" ]] &&
+ for i in "${clonedir}/"*; do
+ [[ ! -d "${i}" ]] ||
git --git-dir="${i}/.git" --work-tree="${i}" clean -ffdx &>/dev/null
done
fi
@@ -1458,9 +1386,7 @@ CleanCache() {
else
if ! Proceed n $"Do you want to remove ALL clones from AUR clone directory?"; then
printf '%s\n' $"removing all clones from AUR clone cache..."
- for i in "${clonedir:?}/"*; do
- [[ -d "${i}" ]] && rm -rf "${i}"
- done
+ for i in "${clonedir}/"*; do [[ ! -d "${i}" ]] || rm -rf "${i}"; done
fi
fi
fi
@@ -1469,25 +1395,18 @@ CleanCache() {
GetIgnoredPkgs() {
# global ignoredpkgs
- mapfile -tO "${#ignoredpkgs[@]}" ignoredpkgs < <(pacman-conf IgnorePkg)
- ignoredpkgs=("${ignoredpkgs[@]//,/ }")
+ mapfile -tO "${#ignoredpkgs[@]}" ignoredpkgs < <("${pacman_conf[@]}" IgnorePkg)
}
GetIgnoredGrps() {
# global ignoredgrps
- mapfile -tO "${#ignoredgrps[@]}" ignoredgrps < <(pacman-conf IgnoreGroup)
- ignoredgrps=("${ignoredgrps[@]//,/ }")
+ mapfile -tO "${#ignoredgrps[@]}" ignoredgrps < <("${pacman_conf[@]}" IgnoreGroup)
}
GetInstallScripts() {
- local installscriptspath
# global installscripts
- [[ -d "${clonedir}/$1" ]] || return
- unset installscriptspath installscripts
- shopt -s nullglob
- installscriptspath=("${clonedir}/$1/"*'.install')
- shopt -u nullglob
- [[ "${installscriptspath[*]}" ]] && installscripts=("${installscriptspath[@]##*/}")
+ [[ ! -d "${clonedir}/$1" ]] ||
+ installscripts=("${clonedir}/$1/"*'.install') installscripts=("${installscripts[@]##*/}")
}
GetBuiltPkg() {
@@ -1498,99 +1417,98 @@ GetBuiltPkg() {
for ext in "${PKGEXT}" .pkg.tar{.xz,,.gz,.bz2,.lzo,.lrz,.Z}; do
builtpkg="$2/$1-${CARCH}${ext}"
[[ -f "${builtpkg}" ]] || builtpkg="$2/$1-any${ext}"
- [[ -f "${builtpkg}" ]] && break
+ [[ ! -f "${builtpkg}" ]] || break
done
- [[ -f "${builtpkg}" ]] || { unset builtpkg; return 1; }
+ [[ -f "${builtpkg}" ]] || { builtpkg=''; return 1; }
}
GetPkgbase() {
local i
# global pkgsbase basepkgs
+ [[ "${pkgsbase[*]:-}" ]] || pkgsbase=()
SetInfo "$@"
for i in "$@"; do
- pkgsbase+=("$(GetInfo PackageBase "${i}")")
+ mapfile -tO "${#pkgsbase[@]}" pkgsbase < <(GetInfo PackageBase "${i}")
done
for i in "${pkgsbase[@]}"; do
[[ " ${basepkgs[*]} " = *" ${i} "* ]] || basepkgs+=("${i}")
done
}
+# shellcheck disable=SC2034,SC2154
SetInfo() {
- # Usage: SetInfo $@
- # Use auracle formatted info output for all aur packages passed to SetInfo, and sort it into
- # associated arrays
- local fields=(Name PackageBase Version Maintainer OutOfDate Groups {,Make,Check}Depends Provides Conflicts)
- local auracle_packages=("$@") cache_array=() info_arrays=() i j
-
- # cache previous info arrays in temporary arrays of the same names, but prefixed with c
- if [[ "${Name[*]}" ]]; then
- mapfile -t cache_array < <(declare -p "${fields[@]}")
- local -A "${cache_array[@]/#declare -A /c}"
- fi
+ # Use auracle formatted info output for all aur packages passed to SetInfo,
+ # and sort it into associated arrays
+ local i apkgs=() ainfo=()
+ local -n field
- unset "${fields[@]}"
+ unset -v Name PackageBase Version Maintainer OutOfDate Groups {,Make,Check}Depends Provides Conflicts
[[ "$*" ]] || return
- declare -Ag "${fields[@]}"
+ declare -Ag \
+ {,c}{Name,PackageBase,Version,Maintainer,OutOfDate,Groups,{,Make,Check}Depends,Provides,Conflicts}
- for i in "${!cName[@]}"; do
- if [[ " $* " = *" ${cName[${i}]} "* ]]; then
- for j in "${!auracle_packages[@]}"; do
- [[ "${cName[${i}]}" != "${auracle_packages[j]}" ]] || unset "auracle_packages[${j}]"
- done
- Name[${i}]="${cName[${i}]}"
- PackageBase[${i}]="${cPackageBase[${i}]}"
- Version[${i}]="${cVersion[${i}]}"
- Maintainer[${i}]="${cMaintainer[${i}]}"
- OutOfDate[${i}]="${cOutOfDate[${i}]}"
- Groups[${i}]="${cGroups[${i}]}"
- Depends[${i}]="${cDepends[${i}]}"
- MakeDepends[${i}]="${cMakeDepends[${i}]}"
- CheckDepends[${i}]="${cCheckDepends[${i}]}"
- Provides[${i}]="${cProvides[${i}]}"
+ for i in "$@"; do
+ if [[ " ${cName[*]} " = *" ${i} "* ]]; then
+ Name[${i}]="${cName[${i}]}" PackageBase[${i}]="${cPackageBase[${i}]}"
+ Version[${i}]="${cVersion[${i}]}" Maintainer[${i}]="${cMaintainer[${i}]}"
+ OutOfDate[${i}]="${cOutOfDate[${i}]}" Groups[${i}]="${cGroups[${i}]}"
+ Depends[${i}]="${cDepends[${i}]}" MakeDepends[${i}]="${cMakeDepends[${i}]}"
+ CheckDepends[${i}]="${cCheckDepends[${i}]}" Provides[${i}]="${cProvides[${i}]}"
Conflicts[${i}]="${cConflicts[${i}]}"
+ else
+ apkgs+=("${i}")
fi
done
- if [[ "${auracle_packages[*]}" ]]; then
- mapfile -t info_arrays < <(auracle info "${auracle_packages[@]}" -F \
- $'Name[{name}]={name}\nPackageBase[{name}]={pkgbase}\nVersion[{name}]={version}\nMaintainer[{name}]={maintainer}\nOutOfDate[{name}]={outofdate:%s}\nGroups[{name}]={groups:\037}\nDepends[{name}]={depends:\037}\nMakeDepends[{name}]={makedepends:\037}\nCheckDepends[{name}]={checkdepends:\037}\nProvides[{name}]={provides:\037}\nConflicts[{name}]={conflicts:\037}')
- [[ ! "${info_arrays[*]}" ]] || declare -g "${info_arrays[@]}"
- fi
+ if [[ "${apkgs[*]}" ]]; then
+ mapfile -t ainfo < <(auracle info "${apkgs[@]}" -F \
+ $'Name[{name}]={name}\nPackageBase[{name}]={pkgbase}
+ Version[{name}]={version}\nMaintainer[{name}]={maintainer}
+ OutOfDate[{name}]={outofdate:%s}\nGroups[{name}]={groups}
+ Depends[{name}]={depends}\nMakeDepends[{name}]={makedepends}
+ CheckDepends[{name}]={checkdepends}\nProvides[{name}]={provides}
+ Conflicts[{name}]={conflicts}'); ainfo=("${ainfo[@]##* }")
+ [[ ! "${ainfo[*]}" ]] || declare -g "${ainfo[@]}" "${ainfo[@]/#/c}"
+ fi
+ for i in "${!Maintainer[@]}"; do : "${Maintainer[${i}]:=%}"; done
+ for field in Groups Depends MakeDepends CheckDepends Provides Conflicts; do
+ for i in "${!field[@]}"; do
+ [[ "${field[${i}]}" ]] || unset -v "field[${i}]"
+ done
+ done
}
GetInfo() {
- local -n field="$1"
-
- if [[ "$2" ]]; then
- printf '%s\n' "${field[$2]//$'\037'/$'\n'}"
- else
- printf '%s\n' "${field[@]//$'\037'/ }"
+ local field
+ field="$(declare -p "$1")"
+ local -A "${field/#declare -A $1/field}"; shift
+
+ if (("$#")) && [[ "$1" && "${field[$1]:-}" ]]; then
+ printf '%s\n' "${field[$1]// /$'\n'}"
+ elif ((! "$#")); then
+ [[ ! "${field[*]}" ]] || printf '%s\n' "${field[@]// /$'\n'}"
fi
}
CheckRequires() {
local -a Qrequires
- mapfile -t Qrequires < <(expac -Ql'\n' '%N' "$@")
- if [[ "${Qrequires[*]}" ]]; then
+ if mapfile -t Qrequires < <(expac -Ql'\n' '%N' "$@"); wait "$!"; then
fail $"failed to prepare transaction (could not satisfy dependencies)"
error $"%s: requires %s" "${Qrequires[*]}" "$*" "${E_INSTALL_DEPS_FAILED}"
fi
}
Proceed() {
- local answer ret readline=0
+ local answer ret readfullline=0
- if [[ "${TERM-}" = 'dumb' ]] || ((cleancache)); then
- readline=1
+ if [[ "${TERM:-}" = 'dumb' ]] || ((clean)); then
+ readfullline=1
fi
case "$1" in
y) printf "%s::%s %s$2 [Y/n] %s" "${colorB}" "${reset}" "${colorW}" "${@:3}" "${reset}"
- if ((noconfirm)); then
- printf '\n'
- return 0
- fi
- while true; do
- if ((readline)); then
+ ((! noconfirm)) || { printf '\n'; return 0; }
+ for ((;;)); do
+ if ((readfullline)); then
read -r answer
else
read -rsn 1 answer
@@ -1598,106 +1516,121 @@ Proceed() {
case "${answer}" in
[Yy]|'') ret=0; break;;
[Nn]) ret=1; break;;
- *) ((readline)) && ret=1 && break;;
+ *) ((! readfullline)) || { ret=1; break; };;
esac
done;;
n) printf "%s::%s %s$2 [y/N] %s" "${colorB}" "${reset}" "${colorW}" "${@:3}" "${reset}"
- if ((noconfirm)); then
- printf '\n'
- return 0
- fi
- while true; do
- if ((readline)); then
+ ((! noconfirm)) || { printf '\n'; return 0; }
+ for ((;;)); do
+ if ((readfullline)); then
read -r answer
else
- read -rsn 1 answer
+ read -rsn1 answer
fi
case "${answer}" in
[Nn]|'') ret=0; break;;
[Yy]) ret=1; break;;
- *) ((readline)) && ret=0 && break;;
+ *) ((! readfullline)) || { ret=0; break; };;
esac
done;;
esac
- ((readline)) || printf '%s\n' "${answer}"
+ ((readfullline)) || printf '%s\n' "${answer}"
return "${ret}"
}
+msg() { # shellcheck disable=SC2059
+ printf "$1 $2\n" "${@:3}"
+}
+
info() {
- printf "%s::%s $1\n" "${colorB}" "${reset}" "${@:2}"
+ msg "${colorB}::${reset}" "$@"
}
warn() {
- printf "%swarning:%s $1\n" "${colorY}" "${reset}" "${@:2}" >&2
+ msg "${colorY}warning:${reset}" "$@" >&2
}
fail() {
- printf "%serror:%s $1\n" "${colorR}" "${reset}" "${@:2}" >&2
+ msg "${colorR}error:${reset}" "$@" >&2
}
error() {
- printf "%serror:%s $1\n" "${colorR}" "${reset}" "${@:2:$#-2}" >&2
- exit "${!#}"
+ fail "${@:1:$#-1}"; exit "${!#}"
}
GetLength() {
local length=0 i
for i in "$@"; do
- (("${#i}" > length)) && length="${#i}"
+ ((length="${#i}" > length ? "${#i}" : length))
done
printf '%s\n' "${length}"
}
NothingToDo() {
- [[ ! "$*" ]] && printf '%s\n' $" there is nothing to do" && exit "${E_OK}" || return 0
+ [[ "$*" ]] || { printf '%s\n' $" there is nothing to do"; exit "${E_OK}"; }
}
SudoV() {
- : >"${tmpdir}/pacaur.sudov.lck"
+ local sleep
+ :>"${tmpdir}/pacaur.sudov.lck"
+ exec {sleep}<> <(:)
while [[ -e "${tmpdir}/pacaur.sudov.lck" ]]; do
- sudo "${pacmanbin}" -V >/dev/null
- sleep 298
+ sudo "${pacman}" -V >/dev/null
+ read -rt 298 -u "${sleep}" || :
done
}
CommArr() {
- # args are names of 2 arrays and outputs elements that are only in the 2nd
- local array1="$1[@]" array2="$2[@]"
- comm <(sort -u <(printf '%s\n' "${!array1-}")) <(sort -u <(printf '%s\n' "${!array2-}")) "$3"
+ # args are names of 2 array names and arguments to comm
+ local arr='' arr1="$2[@]" arr2="$3[@]"
+ [[ ! "${arr:=$(comm "$1" <(SortArr "${!arr1}") <(SortArr "${!arr2}"))}" ]] ||
+ printf '%sii' "${arr}"
+}
+
+SortArr() {
+ local IFS=$'\n'
+ ((! "$#")) || sort -u <<<"$*" # pass all arguments to sort -u
+}
+
+Vercmp() {
+ case "$1" in
+ "$2") printf '%d' 0;;
+ *) vercmp "$1" "$2";;
+ esac
}
-trap Cancel INT
Cancel() {
printf '\n'
- rm -f "${tmpdir:?}"/pacaur.{build,sudov}.lck
- exit
+ rm -f "${tmpdir}"/pacaur.{build,sudov}.lck
+ exit 130
}
Usage() {
- printf '%s\n' $"usage: pacaur <operation> [options] [target(s)] -- See also pacaur(8)"
- printf '%s\n' $"operations:"
- printf '%s\n' $" pacman extension"
- printf '%s\n' $" -S, -Ss, -Si, -Sw, -Su, -Qu, -Sc, -Scc"
- printf '%s\n' $" extend pacman operations to the AUR"
- printf '%s\n' $" general"
- printf '%s\n' $" -v, --version display version information"
- printf '%s\n' $" -h, --help display help information"
- printf '\n'
- printf '%s\n' $"options:"
- printf '%s\n' $" pacman extension - can be used with the -S, -Ss, -Si, -Sw, -Su, -Sc, -Scc operations"
- printf '%s\n' $" -a, --aur only search, build, install or clean target(s) from the AUR"
- printf '%s\n' $" -r, --repo only search, build, install or clean target(s) from the repositories"
- printf '%s\n' $" general"
- printf '%s\n' $" -e, --edit edit target(s) PKGBUILD and view install script"
- printf '%s\n' $" -q, --quiet show less information for query and search"
- printf '%s\n' $" --devel consider AUR development packages upgrade"
- printf '%s\n' $" --foreign consider already installed foreign dependencies"
- printf '%s\n' $" --ignore ignore a package upgrade (can be used more than once)"
- printf '%s\n' $" --needed do not reinstall already up-to-date target(s)"
- printf '%s\n' $" --noconfirm do not prompt for any confirmation"
- printf '%s\n' $" --noedit do not prompt to edit files"
- printf '%s\n' $" --rebuild always rebuild package(s)"
- printf '%s\n' $" --silent silence output"
+ printf '%s\n' \
+ $"usage: pacaur <operation> [options] [target(s)] -- See also pacaur(8)" \
+ $"operations:" \
+ $" pacman extension" \
+ $" -S, -Ss, -Si, -Sw, -Su, -Qu, -Sc, -Scc" \
+ $" extend pacman operations to the AUR" \
+ $" general" \
+ $" -v, --version display version information" \
+ $" -h, --help display help information" \
+ '' \
+ $"options:" \
+ $" pacman extension - can be used with the -S, -Ss, -Si, -Sw, -Su, -Sc, -Scc operations" \
+ $" -a, --aur only search, build, install or clean target(s) from the AUR" \
+ $" -r, --repo only search, build, install or clean target(s) from the repositories" \
+ $" general" \
+ $" -e, --edit edit target(s) PKGBUILD and view install script" \
+ $" -q, --quiet show less information for query and search" \
+ $" --devel consider AUR development packages upgrade" \
+ $" --foreign consider already installed foreign dependencies" \
+ $" --ignore ignore a package upgrade (can be used more than once)" \
+ $" --needed do not reinstall already up-to-date target(s)" \
+ $" --noconfirm do not prompt for any confirmation" \
+ $" --noedit do not prompt to edit files" \
+ $" --rebuild always rebuild package(s)" \
+ $" --silent silence output"
exit "${E_OK}"
}
@@ -1705,66 +1638,74 @@ Usage() {
# Main
#
+trap Cancel INT
+
# options
-shortopts="DFQRSTUVacdefghiklmnopqrstuvwxy"
+shortopts='DFQRSTUVacdeghiklmnopqrstuvwxy'
longopts=('help' 'database' 'files' 'query' 'remove' 'sync' 'deptest' 'upgrade')
+printf -v case_ops '%s|' "${longopts[@]}"
longopts+=('asdeps' 'asexplicit' 'cascade' 'changelog' 'check' 'clean' 'confirm' 'dbonly' 'debug'
'deps' 'disable-download-timeout' 'downloadonly' 'explicit' 'file' 'foreign' 'groups'
'info' 'list' 'machinereadable' 'native' 'needed' 'noconfirm' 'nodeps' 'noprogressbar'
'nosave' 'noscriptlet' 'owns' 'print' 'recursive' 'refresh' 'regex' 'quiet' 'search'
'sysupgrade' 'unneeded' 'unrequired' 'upgrades' 'verbose')
-longopts+=('arch:' 'assume-installed:' 'cachedir:' 'color:' 'config:' 'dbpath:' 'gpgdir:' 'hookdir:'
- 'ignore:' 'ignoregroup:' 'logfile:' 'overwrite:' 'print-format:' 'root:' 'sysroot:')
-longopts_aur=('aur' 'by:' 'devel' 'edit' 'literal' 'noedit' 'rebuild' 'repo' 'rsort:' 'searchby:'
+printf -v case_lo '%s|' "${longopts[@]}"
+longopts_arg=('arch:' 'assume-installed:' 'cachedir:' 'color:' 'config:' 'dbpath:' 'gpgdir:' 'hookdir:'
+ 'ignore:' 'ignoregroup:' 'logfile:' 'overwrite:' 'print-format:' 'root:' 'sysroot:')
+printf -v case_lo_arg '%s|' "${longopts_arg[@]%:}"
+longopts_aur=('aur' 'by:' 'devel' 'edit' 'literal' 'noedit' 'rebuild' 'repo' 'rsort:' 'searchby:'
'silent' 'sort:' 'update' 'version')
-parseopts "${shortopts}" "${longopts[@]}" "${longopts_aur[@]}" -- "$@" || exit "${E_INVALID_OPTION}"
+parseopts "${shortopts}" "${longopts[@]}" "${longopts_arg[@]}" "${longopts_aur[@]}" -- "$@" ||
+ exit "${E_INVALID_OPTION}"
set -- "${OPTRET[@]}"
-while true; do
- [[ "$1" != -[cdf-qs-zDFQRSTUV] ]] || pacmanarg+=("$1")
- for i in "${longopts[@]}"; do
- [[ "$1" != '--'@(version|database|files|query|remove|sync|deptest|upgrade) ]] ||
- { tmp="${1:1:2}" pacmanarg+=("${tmp^^}"); break; }
- [[ "$1" != "--${i}" ]] || pacopts+=("$1")
- [[ "$1": != "--${i}" ]] || pacopts+=("$1=$2")
- done
+for ((;;)); do
case "$1" in
- -S|--sync) pacS=1 pac+=1 installpkg=1 operation='sync';;
- -Q|--query) pacQ=1 pac+=1;;
- -s|--search) search=1;;
- -i|--info) info=1;;
- -e|--edit) pace=1;;
- -u|--upgrades|--sysupgrade) upgrade=1 installpkg=1;;
- -q|--quiet) declare -x QUIET=1; auropts+=("$1");;
- -c|--clean) cleancache=1 ccount+=1;;
- -n|--native) native=1;;
- -r|--repo) repo=1;;
- -a|--aur) aur=1;;
- --ignore) ignoredpkgs+=("$2"); shift;;
- --color) color="$2"; shift;;
- --literal) auropts+=("$1");;
- --?(search)by) auropts+=("--searchby=$2"); shift;;
- --sort) sortorder='ascending' sortby="$2"; shift;;
- --rsort) sortorder='descending' sortby="$2"; shift;;
- -d|--nodeps) nodeps=1 makeopts+=("$1") dcount+=1;;
- --assume-installed) assumeinstalled+=("$2"); shift;;
- -[DFRTUV]|--@(database|files|remove|deptest|upgrade)) pac+=1;;
- --@(asdeps|asexplicit|devel|needed|noconfirm|noedit|rebuild)) declare "${1#--}"=1;;
- -[glp]|--@(groups|list|print)) noop=1;;
- -w|--downloadonly) downloadonly=1;;
- --silent) silent='true' pacopts+=('--quiet') auropts+=('--quiet') makeopts+=('--log');;
- -y|--refresh) refresh=1;;
- -h|--help) help=1;;
- --version) operation='version' pac+=1;;
- -v) ver=1;;
- --) shift; break;;
+ -S|--sync) pacS=1 installpkg=1 operation='sync';;&
+ -Q|--query) pacQ=1;;&
+ -c|--clean) clean=1 ccount+=1;;&
+ -d|--nodeps) makeopts+=("$1") dcount+=1;;&
+ -[glp]|--@(groups|list|print)) noop=1;;&
+ -h|--help) help=1;;&
+ -i|--info) info=1;;&
+ -n|--native) repo=1;;&
+ -q|--quiet) QUIET=1 pacmanarg+=('-q') auropts+=("$1");;
+ -s|--search) search=1;;&
+ -u|--upgrades|--sysupgrade) upgrade=1 installpkg=1;;&
+ -v) ver=1;;&
+ -w|--downloadonly) downloadonly=1;;&
+ -y|--refresh) refresh=1;;&
+ --as@(deps|explicit)) declare "${1#--}"=1;;&
+ --@(needed|noconfirm)) declare "${1#--}"=1;;&
+ --assume-installed) assumeinstalled+=("$2");;&
+ --color) color="$2";;&
+ --config) pacman_conf+=("$1" "$2");;&
+ --ignore) mapfile -tO "${#ignoredpkgs[@]}" ignoredpkgs <<<"${2//,/$'\n'}";;&
+ --ignoregroup) mapfile -tO "${#ignoredgrps[@]}" ignoredgrps <<<"${2//,/$'\n'}";;&
+ --version) operation='version';;&
+ -e|--edit) pace=1;;
+ -a|--aur) aur=1;;
+ -r|--repo) repo=1;;
+ --@(devel|noedit|rebuild)) declare "${1#--}"=1;;
+ --literal) auropts+=("$1");;
+ --silent) silent=1 pacmanarg+=('-q') auropts+=('-q') makeopts+=('-L');;
+ --?(search)by) auropts+=("--searchby=$2"); shift;;
+ --sort) sortorder='ascending' sortby="$2"; shift;;
+ --rsort) sortorder='descending' sortby="$2"; shift;;
+ -[DFQRSTUV]) pacmanarg+=("$1") pac+=1;;
+ -[cg-ik-qs-y]) pacmanarg+=("$1");;
+ --@(${case_ops%|})) pacmanarg+=("${1:1:2}") pacmanarg[-1]="${pacmanarg[-1]^^}" pac+=1;;
+ --@(${case_lo%|})|-d) pacopts+=("$1");;
+ --@(${case_lo_arg%|})) pacopts+=("$1=$2"); shift;;
+ --) shift; break;;
esac
shift
done
# help or version
-[[ "${operation}" = 'version' ]] || ((! pac || ver)) && { printf 'pacaur %s\n' "${version}"; exit "${E_OK}"; }
-((! pac && help)) && Usage
+{ [[ "${operation}" != 'version' ]] && ((pac || ! ver)); } ||
+ { printf 'pacaur %s\n' "${version}"; exit "${E_OK}"; }
+((pac || ! help)) || Usage
# sorting
case "${sortorder}" in
@@ -1776,28 +1717,27 @@ esac
pkgs=("$@")
# color
-[[ ! "${color}" && (! "$(pacman-conf Color)" || "${operation}" = 'upgrades' ||
- "${QUIET}" -ne 0 && "${search}" -ne 0) ]] && color='never' || color='auto'
-pacopts+=("--color=${color}") auropts+=("--color=${color}")
-if [[ "${color}" != 'never' ]]; then
- declare -r reset=$'\033[0m' colorR=$'\033[1;31m' colorG=$'\033[1;32m' colorY=$'\033[1;33m' \
- colorB=$'\033[1;34m' colorM=$'\033[1;35m' colorW=$'\033[1;39m'
-else
- declare -r reset='' colorR='' colorG='' colorY='' colorB='' colorM='' colorW=''
- makeopts+=('-m')
-fi
+[[ ! "${color}" && (! "$("${pacman_conf[@]}" Color)" || "${operation}" = 'upgrades' ||
+ QUIET -ne 0 && search -ne 0) ]] && color='never' || color='auto'
+
+case "${color}" in
+ never) declare -r reset='' colorR='' colorG='' colorY='' colorB='' colorM='' colorW=''
+ pacopts+=('--color=never') auropts+=('--color=never') makeopts+=('-m');;
+ *) declare -r reset=$'\e[0m' colorR=$'\e[1;31m' colorG=$'\e[1;32m' colorY=$'\e[1;33m' \
+ colorB=$'\e[1;34m' colorM=$'\e[1;35m' colorW=$'\e[1;39m'
+ pacopts+=('--color=auto') auropts+=('--color=auto');;
+esac
# sanity check
((! aur)) || refresh=0
((! pace || pac)) || operation='edit'
-((! pacQ || ! pace)) || pacopts+=('-e')
+((! pacQ || ! pace)) || pacmanarg+=('-e')
((! pacQ || ! upgrade)) || operation='upgrades'
-((! pacQ || ! native)) || repo=1
((! pacS || ! downloadonly)) || installpkg=0
((! pacS || ! noop)) || operation=''
-((! pacS || ! cleancache)) || search=0 info=0 upgrade=0
+((! pacS || ! clean)) || search=0 info=0 upgrade=0
((pac <= 1)) || error $"only one operation may be used at a time" "${E_FAIL}"
-[[ "${operation}" != sync ]] || ((search || info || cleancache || EUID)) ||
+[[ "${operation}" != 'sync' ]] || ((search || info || clean || EUID)) ||
error $"you cannot perform this operation as root" "${E_ROOT}"
((! pacS || ! search || ! info)) ||
error $"invalid option: '--info' and '--search' may not be used together" "${E_INVALID_OPTION}"
@@ -1809,9 +1749,9 @@ command -v "${editor%% *}" >/dev/null ||
[[ -w "${clonedir}" ]] ||
error $"%s does not have write permission" "${colorW}${clonedir}${reset}" "${E_FS_PERMISSIONS}"
[[ "${pkgs[*]}" || ("${operation}" != @(sync|edit) && " ${pacmanarg[*]} " != *' -'[RU]' '*) ]] ||
- ((help+refresh+upgrade+cleancache+info)) || error $"no targets specified (use -h for help)" "${E_FAIL}"
-((! repo || ! aur)) || { aur=0 repo=0
- warn $"invalid option: '-r/--repo' and '-a/--aur' may not be used together, disabling both"; }
+ ((help + refresh + upgrade + clean + info)) || error $"no targets specified (use -h for help)" "${E_FAIL}"
+((! repo || ! aur)) ||
+ error $"invalid option: '--repo' and '--aur' may not be used together" "${E_INVALID_OPTION}"
# operations
case "${operation}" in
@@ -1824,56 +1764,50 @@ case "${operation}" in
if ((search)); then
if ((! aur)); then
if ((refresh)); then
- sudo "${pacmanbin}" "${pacmanarg[@]}" "${pacopts[@]}" -- "${pkgs[@]}"
+ sudo "${pacman}" "${pacmanarg[@]}" "${pacopts[@]}" -- "${pkgs[@]}"
else
- "${pacmanbin}" "${pacmanarg[@]}" "${pacopts[@]}" -- "${pkgs[@]}"
+ "${pacman}" "${pacmanarg[@]}" "${pacopts[@]}" -- "${pkgs[@]}"
fi
- exitrepo="$?"
fi
+ exitrepo="$?"
if ((! repo)) && [[ "${pkgs[*]}" ]]; then
- auracle search "${auropts[@]}" -- "${pkgs[@]#aur/}"; exitaur="$?"
+ auracle search "${auropts[@]}" -- "${pkgs[@]#aur/}"
fi
- # exit code
- ((! exitrepo || ! exitaur)) && exit "${E_OK}" || exit "${E_FAIL}"
+ exitaur="$?"
+ ((! exitrepo || ! exitaur)) && exit "${E_OK}" || exit "${E_FAIL}" # exit code
# info (-Si, -i) handling
elif ((info)); then
if [[ ! "${pkgs[*]}" ]] && ((refresh)); then
- sudo "${pacmanbin}" "${pacmanarg[@]}" "${pacopts[@]}"
+ sudo "${pacman}" "${pacmanarg[@]}" "${pacopts[@]}"
elif [[ ! "${pkgs[*]}" ]]; then
- "${pacmanbin}" "${pacmanarg[@]}" "${pacopts[@]}"
+ "${pacman}" "${pacmanarg[@]}" "${pacopts[@]}"
else
ClassifyPkgs "${pkgs[@]}"
fi
if [[ "${repopkgs[*]}" ]]; then
if ((refresh)); then
- sudo "${pacmanbin}" "${pacmanarg[@]}" "${pacopts[@]}" "${repopkgs[@]}"
+ sudo "${pacman}" "${pacmanarg[@]}" "${pacopts[@]}" "${repopkgs[@]}"
else
- "${pacmanbin}" "${pacmanarg[@]}" "${pacopts[@]}" "${repopkgs[@]}"
+ "${pacman}" "${pacmanarg[@]}" "${pacopts[@]}" "${repopkgs[@]}"
fi
fi
if [[ "${aurpkgs[*]}" ]]; then
if ((refresh)) && [[ ! "${repopkgs[*]}" ]]; then
- sudo "${pacmanbin}" -Sy "${pacopts[@]}"
+ sudo "${pacman}" -Sy "${pacopts[@]}"
fi
- if ((! aur)); then
- info $"Package(s) %s not found in repositories, trying %sAUR%s..." \
+ ((aur)) || info $"Package(s) %s not found in repositories, trying %sAUR%s..." \
"${colorW}${aurpkgs[*]}${reset}" "${colorM}" "${reset}"
- fi
auracle info "${auropts[@]}" -- "${aurpkgs[@]}"
fi
# clean (-Sc) handling
- elif ((cleancache)); then
- if ((! aur)); then
- sudo "${pacmanbin}" "${pacmanarg[@]}" "${pacopts[@]}" "${repopkgs[@]}"
- fi
- if ((! repo)); then
- CleanCache "${pkgs[@]}"
- fi
+ elif ((clean)); then
+ ((aur)) || sudo "${pacman}" "${pacmanarg[@]}" "${pacopts[@]}" "${repopkgs[@]}"
+ ((repo)) || CleanCache "${pkgs[@]}"
# sysupgrade (-Su, -u) handling
elif ((upgrade)); then
- [[ "${pkgs[*]}" ]] && ClassifyPkgs "${pkgs[@]}"
+ [[ ! "${pkgs[*]}" ]] || ClassifyPkgs "${pkgs[@]}"
if ((! aur)); then
- if ! sudo "${pacmanbin}" "${pacmanarg[@]}" "${pacopts[@]}" "${repopkgs[@]}" && ((repo)); then
+ if ! sudo "${pacman}" "${pacmanarg[@]}" "${pacopts[@]}" "${repopkgs[@]}" && ((repo)); then
exit "${E_FAIL}"
fi
fi
@@ -1881,58 +1815,52 @@ case "${operation}" in
info $"Package(s) %s not found in repositories, trying %sAUR%s..." \
"${colorW}${aurpkgs[*]}${reset}" "${colorM}" "${reset}"
fi
- if ((! repo)); then
- Core
- fi
+ ((repo)) || Core
elif ((help)); then
- "${pacmanbin}" "${pacmanarg[@]}" "${pacopts[@]}" -- "${pkgs[@]}"
+ "${pacman}" "${pacmanarg[@]}" "${pacopts[@]}" -- "${pkgs[@]}"
# sync (-S, -y), downloadonly (-Sw, -m), refresh (-Sy)
else
if [[ ! "${pkgs[*]}" ]]; then
- sudo "${pacmanbin}" "${pacmanarg[@]}" "${pacopts[@]}"
+ sudo "${pacman}" "${pacmanarg[@]}" "${pacopts[@]}"
else
ClassifyPkgs "${pkgs[@]}"
fi
- if [[ "${repopkgs[*]}" ]]; then
- sudo "${pacmanbin}" "${pacmanarg[@]}" "${pacopts[@]}" "${repopkgs[@]}"
- fi
+ [[ ! "${repopkgs[*]}" ]] || sudo "${pacman}" "${pacmanarg[@]}" "${pacopts[@]}" "${repopkgs[@]}"
if [[ "${aurpkgs[*]}" ]]; then
if ((refresh)) && [[ ! "${repopkgs[*]}" ]]; then
- sudo "${pacmanbin}" -Sy "${pacopts[@]}"
+ sudo "${pacman}" -Sy "${pacopts[@]}"
fi
- if ((! aur)); then
- info $"Package(s) %s not found in repositories, trying %sAUR%s..." \
+ ((aur)) || info $"Package(s) %s not found in repositories, trying %sAUR%s..." \
"${colorW}${aurpkgs[*]}${reset}" "${colorM}" "${reset}"
- fi
Core
fi
fi
exit;;
upgrades) # upgrades (-Qu) handling
- if ((! aur)); then
- "${pacmanbin}" "${pacmanarg[@]}" "${pacopts[@]}" -- "${pkgs[@]}"
- fi
+ ((aur)) || "${pacman}" "${pacmanarg[@]}" "${pacopts[@]}" -- "${pkgs[@]}"
exitrepo="$?"
if ((! repo)); then
[[ "${pkgs[*]}" ]] ||
- mapfile -t pkgs < <("${pacmanbin}" -qm "${pacmanarg[@]//-u}" "${pacopts[@]//--upgrades}")
+ mapfile -t pkgs < <("${pacman}" -q "${pacmanarg[@]/%-u/-m}" \
+ "${pacopts[@]/%--upgrades/--foreign}")
auracle sync "${auropts[@]}" -- "${pkgs[@]}"
- exitaur="$?"
fi
+ exitaur="$?"
if ((! exitrepo || ! exitaur)); then
exit "${E_OK}"
else
exit "${E_FAIL}"
fi;;
- *) if [[ " ${pacmanarg[*]} " = *' -F '* ]] && ((refresh)); then
- sudo "${pacmanbin}" "${pacmanarg[@]}" "${pacopts[@]}" -- "${pkgs[@]}"
+ *) # other operations handling
+ if [[ " ${pacmanarg[*]} " = *' -F '* ]] && ((refresh)); then
+ sudo "${pacman}" "${pacmanarg[@]}" "${pacopts[@]}" -- "${pkgs[@]}"
elif [[ ! "${pkgs[*]}" || " ${pacmanarg[*]} " = *' -'[DFQTglp]' '* ]] &&
- ((! asdeps && ! asexplicit)); then
- "${pacmanbin}" "${pacmanarg[@]}" "${pacopts[@]}" -- "${pkgs[@]}"
+ ((! asdeps && ! asexplicit && ! refresh)); then
+ "${pacman}" "${pacmanarg[@]}" "${pacopts[@]}" -- "${pkgs[@]}"
else
- sudo "${pacmanbin}" "${pacmanarg[@]}" "${pacopts[@]}" -- "${pkgs[@]}"
+ sudo "${pacman}" "${pacmanarg[@]}" "${pacopts[@]}" -- "${pkgs[@]}"
fi
- exit;; # others operations handling
+ exit;;
esac
# vim:set ts=4 sw=4 et:
diff --git a/po/ca.po b/po/ca.po
index 0f1fcd6..a21df00 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -13,13 +13,13 @@ msgstr ""
"X-Generator: Poedit 1.8.5\n"
#: pacaur:115
-msgid "${colorW}Starting AUR upgrade...${reset}"
-msgstr "${colorW}S'està iniciant una actualització AUR...${reset}"
+msgid "%sStarting AUR upgrade...%s"
+msgstr "%sS'està iniciant una actualització AUR...%s"
#: pacaur:129
-msgid "${colorW}$i${reset} is ${colorY}not present${reset} in AUR -- skipping"
+msgid "%s is %snot present%s in AUR -- skipping"
msgstr ""
-"${colorW}$i${reset} ${colorY}no està present${reset} en l'AUR -- s'està "
+"%s %sno està present%s en l'AUR -- s'està "
"saltant"
#: pacaur:159 pacaur:215 pacaur:1111
@@ -27,78 +27,78 @@ msgid "latest"
msgstr "últim"
#: pacaur:164
-msgid "${checkaurpkgs[$i]} is in IgnorePkg/IgnoreGroup. Install anyway?"
+msgid "%s is in IgnorePkg/IgnoreGroup. Install anyway?"
msgstr ""
-"${checkaurpkgs[$i]} és en IgnorePkg/IgnoreGroup. S'ha d'instal·lar igualment?"
+"%s és en IgnorePkg/IgnoreGroup. S'ha d'instal·lar igualment?"
#: pacaur:165
-msgid "${colorW}${checkaurpkgs[$i]}${reset}: ignoring package upgrade"
+msgid "%s: ignoring package upgrade"
msgstr ""
-"${colorW}${checkaurpkgs[$i]}${reset}: s'està ignorant l'actualització de "
+"%s: s'està ignorant l'actualització de "
"paquet"
#: pacaur:170
msgid ""
-"${colorW}${checkaurpkgs[$i]}${reset}: ignoring package upgrade "
-"(${colorR}${checkaurpkgsQver[$i]}${reset} => "
-"${colorG}${checkaurpkgsAver[$i]}${reset})"
+"%s: ignoring package upgrade "
+"(%s => "
+"%s)"
msgstr ""
-"${colorW}${checkaurpkgs[$i]}${reset}: s'està ignorant l'actualització de "
-"paquet (${colorR}${checkaurpkgsQver[$i]}${reset} => "
-"${colorG}${checkaurpkgsAver[$i]}${reset})"
+"%s: s'està ignorant l'actualització de "
+"paquet (%s => "
+"%s)"
#: pacaur:184
msgid "resolving dependencies..."
msgstr "s'estan resolent les dependències..."
#: pacaur:220
-msgid "no results found for $i"
-msgstr "no s'ha trobat cap resultat per a $i"
+msgid "no results found for %s"
+msgstr "no s'ha trobat cap resultat per a %s"
#: pacaur:358
msgid "dependency cycle detected"
msgstr "s'ha detectat un cicle de dependències"
#: pacaur:426 pacaur:441
-msgid "${colorW}$i${reset}: ignoring package upgrade"
-msgstr "${colorW}$i${reset}: s'està ignorant l'actualització de paquet"
+msgid "%s: ignoring package upgrade"
+msgstr "%s: s'està ignorant l'actualització de paquet"
#: pacaur:427 pacaur:433 pacaur:438 pacaur:442
-msgid "Unresolved dependency '${colorW}$i${reset}'"
-msgstr "No s'ha resolt la dependència '${colorW}$i${reset}'"
+msgid "Unresolved dependency '%s'"
+msgstr "No s'ha resolt la dependència '%s'"
#: pacaur:437
-msgid "$i dependency is in IgnorePkg/IgnoreGroup. Install anyway?"
+msgid "%s dependency is in IgnorePkg/IgnoreGroup. Install anyway?"
msgstr ""
-"La dependència $i és en IgnorePkg/IgnoreGroup. S'ha d'instal·lar igualment?"
+"La dependència %s és en IgnorePkg/IgnoreGroup. S'ha d'instal·lar igualment?"
#: pacaur:470
msgid ""
-"${colorW}There are ${#providers[@]} providers available for "
-"${providersdeps[$i]}:${reset}"
+"%sThere are %s providers available for "
+"%s:%s"
msgstr ""
-"${colorW}Hi ha ${#providers[@]} proveïdors disponibles per "
-"${providersdeps[$i]}:${reset}"
+"%sHi ha %s proveïdors disponibles per "
+"%s:%s"
#: pacaur:477
msgid "Enter a number (default=0):"
msgstr "Introduïu un número (per defecte=0):"
#: pacaur:482
-msgid "invalid value: $nb is not between 0 and $providersnb"
-msgstr "valor no vàlid: $nb no està entre 0 i $providersnb"
+msgid "invalid value: %s is not between 0 and %s"
+msgstr "valor no vàlid: %s no està entre 0 i %s"
#: pacaur:484
-msgid "invalid number: $nb"
-msgstr "el nombre no és vàlid: $nb"
+msgid "invalid number: %s"
+msgstr "el nombre no és vàlid: %s"
#: pacaur:526
msgid "looking for inter-conflicts..."
msgstr "s'estan cercant interconflictes..."
#: pacaur:562 pacaur:631
-msgid "$j and $k are in conflict ($i). Remove $k?"
-msgstr "$j i $k tenen conflictes ($i). S'elimina $k?"
+msgid "%s and %s are in conflict (%s). Remove %s?"
+msgstr "%s i %s tenen conflictes (%s). S'elimina %s?"
#: pacaur:576 pacaur:639
msgid "unresolvable package conflicts detected"
@@ -109,35 +109,33 @@ msgid "failed to prepare transaction (conflicting dependencies)"
msgstr "ha fallat en preparar la transacció (dependències conflictives)"
#: pacaur:578 pacaur:641
-msgid "$j and $k are in conflict"
-msgstr "$j i $k tenen conflictes"
+msgid "%s and %s are in conflict"
+msgstr "%s i %s tenen conflictes"
#: pacaur:659
-msgid "${colorW}${depsAname[$i]}${reset} latest revision -- fetching"
-msgstr "última revisió de ${colorW}${depsAname[$i]}${reset} -- s'està obtenint"
+msgid "%s latest revision -- fetching"
+msgstr "última revisió de %s -- s'està obtenint"
#: pacaur:662
msgid ""
-"${colorW}${depsAname[$i]}-${depsQver[$i]}${reset} is up to date -- "
+"%s-%s is up to date -- "
"reinstalling"
msgstr ""
-"${colorW}${depsAname[$i]}-${depsQver[$i]}${reset} és al dia -- s'està "
+"%s-%s és al dia -- s'està "
"reinstal·lant"
#: pacaur:664
msgid ""
-"${colorW}${depsAname[$i]}-${depsQver[$i]}${reset} is up to date -- skipping"
-msgstr "${colorW}${depsAname[$i]}-${depsQver[$i]}${reset} és al dia -- saltant"
+"%s-%s is up to date -- skipping"
+msgstr "%s-%s és al dia -- saltant"
#: pacaur:679
msgid ""
-"${colorW}${depsAname[$i]}-${depsAver[$i]}${reset} has been flagged ${colorR}"
-"out of date${reset} on ${colorY}$(date -d \"@${depsAood[$i]}\" \"+%Y-%m-%d"
-"\")${reset}"
+"%s-%s has been flagged %s"
+"out of date%s on %s"
msgstr ""
-"${colorW}${depsAname[$i]}-${depsAver[$i]}${reset} s'ha marcat com a ${colorR}"
-"fora de data${reset} en ${colorY}$(date -d \"@${depsAood[$i]}\" \"+%Y-%m-%d"
-"\")${reset}"
+"%s-%s s'ha marcat com a %s"
+"fora de data%s en %s"
#: pacaur:707
msgid "cached"
@@ -160,16 +158,16 @@ msgid "Download Size"
msgstr "Mida de la baixada"
#: pacaur:722 pacaur:746
-msgid "AUR Packages (${#deps[@]}):"
-msgstr "Paquets AUR (${#deps[@]}):"
+msgid "AUR Packages "
+msgstr "Paquets AUR "
#: pacaur:732 pacaur:747
-msgid "Repo Packages (${#repodepspkgs[@]}):"
-msgstr "Paquets de repositoris (${#repodepspkgs[@]}):"
+msgid "Repo Packages "
+msgstr "Paquets de repositoris "
#: pacaur:735
-msgid "${binarysize[$i]} MiB"
-msgstr "${binarysize[$i]} MiB"
+msgid " MiB"
+msgstr " MiB"
#: pacaur:751
msgid "Repo Download Size:"
@@ -192,110 +190,104 @@ msgid "download"
msgstr "baixada"
#: pacaur:761
-msgid "Proceed with $action?"
-msgstr "Inicio la $action?"
+msgid "Proceed with installation?"
+msgstr "Inicio la installation?"
+
+#: pacaur:762
+msgid "Proceed with download?"
+msgstr "Inicio la download?"
#: pacaur:770
-msgid "${colorW}Retrieving package(s)...${reset}"
-msgstr "${colorW}S'està(an) recuperant el(s) paquet(s)...${reset}"
+msgid "%sRetrieving package(s)...%s"
+msgstr "%sS'està(an) recuperant el(s) paquet(s)...%s"
#: pacaur:805
-msgid "View $i build files diff?"
+msgid "View %s build files diff?"
msgstr ""
#: pacaur:808
#, fuzzy
-msgid "${colorW}$i${reset} build files diff viewed"
-msgstr "S'ha vist l'script de ${colorW}$j${reset}"
+msgid "%s build files diff viewed"
+msgstr "S'ha vist l'script de %s"
#: pacaur:812
-msgid "View $i PKGBUILD?"
-msgstr "Voleu veure el PKGBUILD de $i?"
+msgid "View %s PKGBUILD?"
+msgstr "Voleu veure el PKGBUILD de %s?"
#: pacaur:813 pacaur:827
-msgid "${colorW}$i${reset} PKGBUILD viewed"
-msgstr "S'ha vist el PKGBUILD de ${colorW}$i${reset}"
+msgid "%s PKGBUILD viewed"
+msgstr "S'ha vist el PKGBUILD de %s"
#: pacaur:813 pacaur:827
-msgid "Could not open ${colorW}$i${reset} PKGBUILD"
-msgstr "No s'ha pogut obrir el PKGBUILD de ${colorW}$i${reset}"
+msgid "Could not open %s PKGBUILD"
+msgstr "No s'ha pogut obrir el PKGBUILD de %s"
#: pacaur:818
-msgid "View $j script?"
-msgstr "Voleu veure l'script de $j?"
+msgid "View %s script?"
+msgstr "Voleu veure l'script de %s?"
#: pacaur:819 pacaur:830
-msgid "${colorW}$j${reset} script viewed"
-msgstr "S'ha vist l'script de ${colorW}$j${reset}"
+msgid "%s script viewed"
+msgstr "S'ha vist l'script de %s"
#: pacaur:819 pacaur:830
-msgid "Could not open ${colorW}$j${reset} script"
-msgstr "No s'ha pogut obrir l'script de ${colorW}$j${reset}"
+msgid "Could not open %s script"
+msgstr "No s'ha pogut obrir l'script de %s"
#: pacaur:891
-msgid "Checking ${colorW}${pkgsdeps[$i]}${reset} integrity..."
-msgstr "S'està comprovant la integritat de ${colorW}${pkgsdeps[$i]}${reset}..."
+msgid "Checking %s integrity..."
+msgstr "S'està comprovant la integritat de %s..."
#: pacaur:903
-msgid "failed to verify ${colorW}$i${reset} integrity"
-msgstr "ha fallat en verificar la integritat de ${colorW}$j${reset}"
+msgid "failed to verify %s integrity"
+msgstr "ha fallat en verificar la integritat de %s"
#: pacaur:908
-msgid "build.lck exists in $tmpdir"
-msgstr "build.lck existeix en $tmpdir"
+msgid "build.lck exists in %s"
+msgstr "build.lck existeix en %s"
#: pacaur:913
#, fuzzy
msgid ""
-"Installing ${colorW}${repoprovidersconflictingpkgs[@]}${reset} "
+"Installing %s "
"dependencies..."
msgstr ""
"S'estan instal·lant les dependències de "
-"${colorW}${providerpkgs[@]}${reset}..."
+"%s..."
#: pacaur:937
-msgid "${colorW}$j${reset} is up-to-date -- skipping"
-msgstr "${colorW}$j${reset} és al dia -- s'està saltant"
+msgid "%s-%s is up-to-date -- skipping"
+msgstr "%s-%s és al dia -- s'està saltant"
#: pacaur:953
-msgid "Installing ${colorW}$j${reset} cached package..."
+msgid "Installing %s cached package..."
msgstr ""
-"S'està instal·lant el paquet ${colorW}$j${reset} des de la memòria cau..."
+"S'està instal·lant el paquet %s des de la memòria cau..."
#: pacaur:957
-msgid "Package ${colorW}$j${reset} already available in cache"
-msgstr "El paquet ${colorW}$j${reset} ja està disponible en la memòria cau"
+msgid "Package %s already available in cache"
+msgstr "El paquet %s ja està disponible en la memòria cau"
#: pacaur:966
-msgid "Building ${colorW}${pkgsdeps[$i]}${reset} package(s)..."
-msgstr "S'està(an) construint ${colorW}${pkgsdeps[$i]}${reset} paquet(s)..."
+msgid "Building %s package(s)..."
+msgstr "S'està(an) construint %s paquet(s)..."
#: pacaur:1001
#, fuzzy
-msgid "Installing ${colorW}${pkgsdeps[$i]}${reset} package(s)..."
-msgstr "S'està(an) construint ${colorW}${pkgsdeps[$i]}${reset} paquet(s)..."
-
-#: pacaur:1003
-msgid ""
-"${colorW}${pkgsdeps[$i]}${reset} package(s) failed to install. Check ."
-"SRCINFO for mismatching data with PKGBUILD."
-msgstr ""
+msgid "Installing %s package(s)..."
+msgstr "S'està(an) construint %s paquet(s)..."
#: pacaur:1021
msgid "Removing installed AUR dependencies..."
msgstr "S'estan eliminant les dependències AUR instal·lades..."
#: pacaur:1037
-msgid "${colorW}$i${reset} is a ${colorY}new orphan${reset} package"
-msgstr "${colorW}$i${reset} és un ${colorY}nou paquet orfe${reset}"
+msgid "%s is a %snew orphan%s package"
+msgstr "%s és un %snou paquet orfe%s"
#: pacaur:1042
-msgid "failed to build ${colorW}$i${reset} package(s)"
-msgstr "ha fallat en construir ${colorW}${pkgsdeps[$i]}${reset} paquet(s)"
-
-#: pacaur:1069 pacaur:1110
-msgid "[ ignored ]"
-msgstr "[ ignorat ]"
+msgid "failed to build %s package(s)"
+msgstr "ha fallat en construir %s paquet(s)"
#: pacaur:1125
msgid "Packages to keep:"
@@ -365,16 +357,8 @@ msgstr ""
"ha fallat en preparar la transacció (no s'ha pogut satisfer les dependències)"
#: pacaur:1243
-msgid "${Qrequires[@]}: requires $@"
-msgstr "${Qrequires[@]}: requereix $@"
-
-#: pacaur:1252
-msgid "$2 [Y/n] "
-msgstr "$2 [S/n] "
-
-#: pacaur:1259
-msgid "$2 [y/N] "
-msgstr "$2 [s/N] "
+msgid "%s: requires %s"
+msgstr "%s: requereix %s"
#: pacaur:1290
msgid " there is nothing to do"
@@ -402,38 +386,6 @@ msgstr ""
msgid " extend pacman operations to the AUR"
msgstr " estén les operacions del pacman a l'AUR"
-#: pacaur:1315
-msgid " AUR specific"
-msgstr " específic a l'AUR"
-
-#: pacaur:1316
-msgid " -s, --search search AUR for matching strings"
-msgstr " -s, --search cerca cadenes coincidents en l'AUR"
-
-#: pacaur:1317
-msgid " -i, --info view package information"
-msgstr " -i, --info mostra la informació dels paquets"
-
-#: pacaur:1318
-msgid ""
-" -d, --download download target(s) -- pass twice to download AUR "
-"dependencies"
-msgstr ""
-" -d, --download baixa objectiu(s) -- passa'l dues vegades per baixar les "
-"dependències AUR"
-
-#: pacaur:1319
-msgid " -m, --makepkg download and make target(s)"
-msgstr " -m, --makepkg baixa i fes objectiu(s)"
-
-#: pacaur:1320
-msgid " -y, --sync download, make and install target(s)"
-msgstr " -y, --sync baixa, fes i instal·la objectiu(s)"
-
-#: pacaur:1321
-msgid " -k, --check check for AUR update(s)"
-msgstr " -k, --check cerca actualització(ons) AUR"
-
#: pacaur:1323 pacaur:1331
msgid " general"
msgstr " general"
@@ -531,16 +483,10 @@ msgstr "no podeu realitzar aquesta operació com a root"
msgid "${colorW}editor${reset} variable unset"
msgstr "la variable ${colorW}editor${reset} no està establerta"
-#: pacaur:1471
-msgid ""
-"${colorW}clonedir${reset} or ${colorW}\\$AURDEST${reset} should be set to a "
-"non volatile memory location"
-msgstr ""
-
#: pacaur:1472
#, fuzzy
-msgid "${colorW}$clonedir${reset} does not have write permission."
-msgstr "${colorW}$builddir${reset} no té permís d'escriptura."
+msgid "%s does not have write permission."
+msgstr "%s no té permís d'escriptura."
#: pacaur:1473
msgid "no targets specified (use -h for help)"
@@ -552,11 +498,11 @@ msgstr "no s'ha trobat l'objectiu"
#: pacaur:1511 pacaur:1523 pacaur:1531
msgid ""
-"Package(s) ${colorW}${aurpkgs[*]}${reset} not found in repositories, trying "
-"${colorM}AUR${reset}..."
+"Package(s) %s not found in repositories, trying "
+"%sAUR%s..."
msgstr ""
-"El(s) paquet(s) ${colorW}${aurpkgs[*]}${reset} no es troba(en) als "
-"repositoris, s'està intentant amb l'${colorM}AUR${reset}..."
+"El(s) paquet(s) %s no es troba(en) als "
+"repositoris, s'està intentant amb l'%sAUR%s..."
#~ msgid "Installing ${colorW}${pkgsdeps[$i]}${reset} dependencies..."
#~ msgstr ""
diff --git a/po/da.po b/po/da.po
index 2e5d5fe..91dc884 100644
--- a/po/da.po
+++ b/po/da.po
@@ -12,87 +12,87 @@ msgstr ""
"X-Generator: Poedit 1.8.7.1\n"
#: pacaur:115
-msgid "${colorW}Starting AUR upgrade...${reset}"
-msgstr "${colorW}Starter AUR opgradering...${reset}"
+msgid "%sStarting AUR upgrade...%s"
+msgstr "%sStarter AUR opgradering...%s"
#: pacaur:134
-msgid "${colorW}$i${reset} is ${colorY}not present${reset} in AUR -- skipping"
+msgid "%s is %snot present%s in AUR -- skipping"
msgstr ""
-"${colorW}$i${reset} er ${colorY}ikke tilstede${reset} i AUR -- springer over"
+"%s er %sikke tilstede%s i AUR -- springer over"
#: pacaur:163 pacaur:207 pacaur:1160
msgid "latest"
msgstr "nyeste"
#: pacaur:168
-msgid "${checkaurpkgs[$i]} is in IgnorePkg/IgnoreGroup. Install anyway?"
-msgstr "${checkaurpkgs[$i]} er i IgnorePkg/IgnoreGroup. Installer alligevel?"
+msgid "%s is in IgnorePkg/IgnoreGroup. Install anyway?"
+msgstr "%s er i IgnorePkg/IgnoreGroup. Installer alligevel?"
#: pacaur:169
-msgid "${colorW}${checkaurpkgs[$i]}${reset}: ignoring package upgrade"
-msgstr "${colorW}${checkaurpkgs[$i]}${reset}: ignorerer pakke opdatering"
+msgid "%s: ignoring package upgrade"
+msgstr "%s: ignorerer pakke opdatering"
#: pacaur:174
msgid ""
-"${colorW}${checkaurpkgs[$i]}${reset}: ignoring package upgrade "
-"(${colorR}${checkaurpkgsQver[$i]}${reset} => "
-"${colorG}${checkaurpkgsAver[$i]}${reset})"
+"$%s: ignoring package upgrade "
+"(%s => "
+"%s)"
msgstr ""
-"${colorW}${checkaurpkgs[$i]}${reset}: ignorerer pakke opgradering "
-"(${colorR}${checkaurpkgsQver[$i]}${reset} => "
-"${colorG}${checkaurpkgsAver[$i]}${reset})"
+"%s: ignorerer pakke opgradering "
+"(%s => "
+"%s)"
#: pacaur:188
msgid "resolving dependencies..."
msgstr "opklarer afhængigheder..."
#: pacaur:212
-msgid "no results found for $i"
-msgstr "ingen resultater fundet for $i"
+msgid "no results found for %s"
+msgstr "ingen resultater fundet for %s"
#: pacaur:365
msgid "dependency cycle detected"
msgstr "afhængigheds-løkke fundet"
#: pacaur:433 pacaur:448
-msgid "${colorW}$i${reset}: ignoring package upgrade"
-msgstr "${colorW}$i${reset}: ignorerer pakke opgradering"
+msgid "%s: ignoring package upgrade"
+msgstr "%s: ignorerer pakke opgradering"
#: pacaur:434 pacaur:440 pacaur:445 pacaur:449
-msgid "Unresolved dependency '${colorW}$i${reset}'"
-msgstr "Uafklaret afhængighed '${colorW}$i${reset}'"
+msgid "Unresolved dependency '%s'"
+msgstr "Uafklaret afhængighed '%s'"
#: pacaur:444
-msgid "$i dependency is in IgnorePkg/IgnoreGroup. Install anyway?"
-msgstr "$i afhængighed er i IgnorePkg/IgnoreGroup. Installer alligevel?"
+msgid "%s dependency is in IgnorePkg/IgnoreGroup. Install anyway?"
+msgstr "%s afhængighed er i IgnorePkg/IgnoreGroup. Installer alligevel?"
#: pacaur:484
msgid ""
-"${colorW}There are ${#providers[@]} providers available for "
-"${providersdeps[$i]}:${reset}"
+"$%sThere are %s providers available for "
+"%s:%s"
msgstr ""
-"${colorW}Der er ${#providers[@]} udbydere tilgængelige for "
-"${providersdeps[$i]}:${reset}"
+"%sDer er %s udbydere tilgængelige for "
+"%s:%s"
#: pacaur:491
msgid "Enter a number (default=0):"
msgstr "Skriv et nummer (standard=0):"
#: pacaur:498
-msgid "invalid value: $nb is not between 0 and $providersnb"
-msgstr "ugyldig værdi: $nb er ikke mellem 0 og $providersnb"
+msgid "invalid value: %s is not between 0 and %s"
+msgstr "ugyldig værdi: %s er ikke mellem 0 og %s"
#: pacaur:503
-msgid "invalid number: $nb"
-msgstr "ugyldigt nummer: $nb"
+msgid "invalid number: %s"
+msgstr "ugyldigt nummer: %s"
#: pacaur:545
msgid "looking for inter-conflicts..."
msgstr "leder efter inter-konflikter..."
#: pacaur:581 pacaur:650
-msgid "$j and $k are in conflict ($i). Remove $k?"
-msgstr "$j og $k konflikter med hinanden ($i). Fjern $k?"
+msgid "%s and %s are in conflict (%s). Remove %s?"
+msgstr "%s og %s konflikter med hinanden (%s). Fjern %s?"
#: pacaur:595 pacaur:658
msgid "unresolvable package conflicts detected"
@@ -103,49 +103,47 @@ msgid "failed to prepare transaction (conflicting dependencies)"
msgstr "kunne ikke forberede transaktion (konfliktende afhængigheder)"
#: pacaur:597 pacaur:660
-msgid "$j and $k are in conflict"
-msgstr "$j og $k konflikter med hindanden"
+msgid "%s and %s are in conflict"
+msgstr "%s og %s konflikter med hindanden"
#: pacaur:678
-msgid "${colorW}${depsAname[$i]}${reset} latest revision -- fetching"
-msgstr "${colorW}${depsAname[$i]}${reset} nyeste revision -- henter"
+msgid "%s latest revision -- fetching"
+msgstr "%s nyeste revision -- henter"
#: pacaur:681
msgid ""
-"${colorW}${depsAname[$i]}-${depsQver[$i]}${reset} is up to date -- "
+"%s-%s is up to date -- "
"reinstalling"
msgstr ""
-"${colorW}${depsAname[$i]}-${depsQver[$i]}${reset} er opdateret -- "
+"%s-%s er opdateret -- "
"geninstallerer"
#: pacaur:683
msgid ""
-"${colorW}${depsAname[$i]}-${depsQver[$i]}${reset} is up to date -- skipping"
+"%s-%s is up to date -- skipping"
msgstr ""
-"${colorW}${depsAname[$i]}-${depsQver[$i]}${reset} er opdateret - springer "
+"%s-%s er opdateret - springer "
"over"
#: pacaur:698
msgid ""
-"${colorW}${depsAname[$i]}-${depsAver[$i]}${reset} has been flagged ${colorR}"
-"out of date${reset} on ${colorY}$(date -d \"@${depsAood[$i]}\" \"+%Y-%m-%d"
-"\")${reset}"
+"%s-%s has been flagged %s"
+"out of date%s on %s"
msgstr ""
-"${colorW}${depsAname[$i]}-${depsAver[$i]}${reset} er blevet mærket ${colorR}"
-"forældet${reset} den ${colorY}$(date -d \"@${depsAood[$i]}\" \"+%Y-%m-%d"
-"\")${reset}"
+"%s-%s er blevet mærket %s"
+"forældet%s den %s"
#: pacaur:726
msgid "cached"
msgstr "cached"
#: pacaur:731 pacaur:764
-msgid "AUR Packages (${#deps[@]})"
-msgstr "AUR Pakker (${#deps[@]})"
+msgid "AUR Packages "
+msgstr "AUR Pakker "
#: pacaur:731 pacaur:765
-msgid "Repo Packages (${#repodepspkgs[@]})"
-msgstr "Repo Pakker (${#repodepspkgs[@]})"
+msgid "Repo Packages "
+msgstr "Repo Pakker "
#: pacaur:731
msgid "Old Version"
@@ -160,8 +158,8 @@ msgid "Download Size"
msgstr "Download Str."
#: pacaur:753
-msgid "${binarysize[$i]} MiB"
-msgstr "${binarysize[$i]} MiB"
+msgid " MiB"
+msgstr " MiB"
#: pacaur:769
msgid "Repo Download Size:"
@@ -184,96 +182,92 @@ msgid "download"
msgstr "download"
#: pacaur:779 pacaur:873
-msgid "Proceed with $action?"
-msgstr "Fortsæt med $action?"
+msgid "Proceed with installation?"
+msgstr "Fortsæt med installation?"
+
+#: pacaur:779 pacaur:873
+msgid "Proceed with download"
+msgstr "Fortsæt med download"
#: pacaur:788
-msgid "${colorW}Retrieving package(s)...${reset}"
-msgstr "${colorW}Henter Pakke(r)...${reset}"
+msgid "%sRetrieving package(s)...%s"
+msgstr "%sHenter Pakke(r)...%s"
#: pacaur:821
-msgid "View $i build files diff?"
-msgstr "Vis $i build files diff?"
+msgid "View %s build files diff?"
+msgstr "Vis %s build files diff?"
#: pacaur:823
-msgid "${colorW}$i${reset} build files diff viewed"
-msgstr "${colorW}$i${reset} build files diff vist"
+msgid "%s build files diff viewed"
+msgstr "%s build files diff vist"
#: pacaur:827
-msgid "${colorW}$i${reset} build files are up-to-date -- skipping"
-msgstr "${colorW}$i${reset} build filer er opdaterede -- springer over"
+msgid "%s build files are up-to-date -- skipping"
+msgstr "%s build filer er opdaterede -- springer over"
#: pacaur:831
-msgid "View $i PKGBUILD?"
-msgstr "Vis $i PKGBUILD?"
+msgid "View %s PKGBUILD?"
+msgstr "Vis %s PKGBUILD?"
#: pacaur:833 pacaur:855
-msgid "${colorW}$i${reset} PKGBUILD viewed"
-msgstr "${colorW}$i${reset} PKGBUILD vist"
+msgid "%s PKGBUILD viewed"
+msgstr "%s PKGBUILD vist"
#: pacaur:835 pacaur:857
-msgid "Could not open ${colorW}$i${reset} PKGBUILD"
-msgstr "Kunne ikke åbne ${colorW}$i${reset} PKGBUILD"
+msgid "Could not open %s PKGBUILD"
+msgstr "Kunne ikke åbne %s PKGBUILD"
#: pacaur:841
-msgid "View $j script?"
-msgstr "Vis $j script?"
+msgid "View %s script?"
+msgstr "Vis %s script?"
#: pacaur:843 pacaur:862
-msgid "${colorW}$j${reset} script viewed"
-msgstr "${colorW}$j${reset} script vist"
+msgid "%s script viewed"
+msgstr "%s script vist"
#: pacaur:845 pacaur:864
-msgid "Could not open ${colorW}$j${reset} script"
-msgstr "Kunne ikke åbne ${colorW}$j${reset} script"
+msgid "Could not open %s script"
+msgstr "Kunne ikke åbne %s script"
#: pacaur:934
-msgid "Checking ${colorW}${pkgsdeps[$i]}${reset} integrity..."
-msgstr "Tjekker ${colorW}${pkgsdeps[$i]}${reset} integritet..."
+msgid "Checking %s integrity..."
+msgstr "Tjekker %s integritet..."
#: pacaur:946
-msgid "failed to verify ${colorW}$i${reset} integrity"
-msgstr "kunne ikke verificere ${colorW}$i${reset} integritet"
+msgid "failed to verify %s integrity"
+msgstr "kunne ikke verificere %s integritet"
#: pacaur:951
-msgid "build.lck exists in $tmpdir"
-msgstr "build.lck eksisterer i $tmpdir"
+msgid "build.lck exists in %s"
+msgstr "build.lck eksisterer i %s"
#: pacaur:956
msgid ""
-"Installing ${colorW}${repoprovidersconflictingpkgs[@]}${reset} "
+"Installing %s "
"dependencies..."
msgstr ""
-"Installerer ${colorW}${repoprovidersconflictingpkgs[@]}${reset} "
+"Installerer %s "
"afhængigheder..."
#: pacaur:980
-msgid "${colorW}$j${reset} is up-to-date -- skipping"
-msgstr "${colorW}$j${reset} er opdateret -- springer over"
+msgid "%s is up-to-date -- skipping"
+msgstr "%s er opdateret -- springer over"
#: pacaur:1001
-msgid "Installing ${colorW}$j${reset} cached package..."
-msgstr "Installerer ${colorW}$j${reset} cached pakke..."
+msgid "Installing %s cached package..."
+msgstr "Installerer %s cached pakke..."
#: pacaur:1005
-msgid "Package ${colorW}$j${reset} already available in cache"
-msgstr "Pakken ${colorW}$j${reset} er allerede tilgængelig i cache"
+msgid "Package %s already available in cache"
+msgstr "Pakken %s er allerede tilgængelig i cache"
#: pacaur:1014
-msgid "Building ${colorW}${pkgsdeps[$i]}${reset} package(s)..."
-msgstr "Bygger ${colorW}${pkgsdeps[$i]}${reset} pakke(r)..."
+msgid "Building %s package(s)..."
+msgstr "Bygger %s pakke(r)..."
#: pacaur:1050
-msgid "Installing ${colorW}${pkgsdeps[$i]}${reset} package(s)..."
-msgstr "Installerer ${colorW}${pkgsdeps[$i]}${reset} pakke(r)..."
-
-#: pacaur:1052
-msgid ""
-"${colorW}${pkgsdeps[$i]}${reset} package(s) failed to install. Check ."
-"SRCINFO for mismatching data with PKGBUILD."
-msgstr ""
-"${colorW}${pkgsdeps[$i]}${reset} pakkep(r) kunne ikke installeres. Tjek ."
-"SRCINFO for ikke-matchende data med PKGBUILD."
+msgid "Installing %s package(s)..."
+msgstr "Installerer %s pakke(r)..."
#: pacaur:1070
msgid "Removing installed AUR dependencies..."
@@ -284,8 +278,8 @@ msgid "${colorW}$i${reset} is a ${colorY}new orphan${reset} package"
msgstr "${colorW}$i${reset} er en ${colorY}ny forældreløs${reset} pakke"
#: pacaur:1091
-msgid "failed to build ${colorW}$i${reset} package(s)"
-msgstr "kunne ikke bygge ${colorW}$i${reset} pakke(r)"
+msgid "failed to build %s package(s)"
+msgstr "kunne ikke bygge %s pakke(r)"
#: pacaur:1118 pacaur:1159
msgid "[ ignored ]"
@@ -357,16 +351,8 @@ msgstr ""
"kunne ikke forberede transaktionen (kunne ikke tilfredsstille afhængigheder)"
#: pacaur:1293
-msgid "${Qrequires[@]}: requires $@"
-msgstr "${Qrequires[@]}: kræver $@"
-
-#: pacaur:1302
-msgid "$2 [Y/n] "
-msgstr "$2 [J/n] "
-
-#: pacaur:1309
-msgid "$2 [y/N] "
-msgstr "$2 [j/N] "
+msgid "%s: requires %s"
+msgstr "%s: kræver %s"
#: pacaur:1340
msgid " there is nothing to do"
@@ -392,38 +378,6 @@ msgstr " -S, -Ss, -Si, -Sw, -Su, -Qu, -Sc, -Scc"
msgid " extend pacman operations to the AUR"
msgstr " udvid pacman handlinger med AUR"
-#: pacaur:1365
-msgid " AUR specific"
-msgstr " AUR specifikt"
-
-#: pacaur:1366
-msgid " -s, --search search AUR for matching strings"
-msgstr " -s, --search søg AUR for matchende ord"
-
-#: pacaur:1367
-msgid " -i, --info view package information"
-msgstr " -i, --info vis pakke information"
-
-#: pacaur:1368
-msgid ""
-" -d, --download download target(s) -- pass twice to download AUR "
-"dependencies"
-msgstr ""
-" -d, --download download mål -- skriv dobbelt for at downloade AUR "
-"afhængigheder"
-
-#: pacaur:1369
-msgid " -m, --makepkg download and make target(s)"
-msgstr " -m, --makepkg download og byg mål"
-
-#: pacaur:1370
-msgid " -y, --sync download, make and install target(s)"
-msgstr " -y, --sync download, byg og installer mål"
-
-#: pacaur:1371
-msgid " -k, --check check for AUR update(s)"
-msgstr " -k, --check tjek for AUR opdateringer"
-
#: pacaur:1373 pacaur:1381
msgid " general"
msgstr "generelt"
@@ -510,17 +464,9 @@ msgstr "Du kan ikke gøre denne handling som root"
msgid "${colorW}editor${reset} variable unset"
msgstr "${colorW}editor${reset} variabel er ikke sat"
-#: pacaur:1520
-msgid ""
-"${colorW}clonedir${reset} or ${colorW}\\$AURDEST${reset} should be set to a "
-"non volatile memory location"
-msgstr ""
-"${colorW}clonedir${reset} eller ${colorW}\\$AURDEST${reset} burde være sat "
-"til en ikke-flygtig hukommelses placering"
-
#: pacaur:1521
-msgid "${colorW}$clonedir${reset} does not have write permission."
-msgstr "${colorW}$clonedir${reset} har ikke skrive tilladelse."
+msgid "%s does not have write permission."
+msgstr "%s har ikke skrive tilladelse."
#: pacaur:1522 pacaur:1523
msgid "no targets specified (use -h for help)"
@@ -532,8 +478,8 @@ msgstr "mål ikke fundet"
#: pacaur:1565 pacaur:1577 pacaur:1589
msgid ""
-"Package(s) ${colorW}${aurpkgs[*]}${reset} not found in repositories, trying "
-"${colorM}AUR${reset}..."
+"Package(s) %s not found in repositories, trying "
+"%sAUR%s..."
msgstr ""
-"Pakke(r) ${colorW}${aurpkgs[*]}${reset} ikke fundet i repoer, prøver "
-"${colorM}AUR${reset}..."
+"Pakke(r) %s ikke fundet i repoer, prøver "
+"%sAUR%s..."