summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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..."