summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authore5ten <e5ten.arch@gmail.com>2019-04-22 05:10:54 -0400
committere5ten <e5ten.arch@gmail.com>2019-05-03 14:03:02 -0400
commit3b1d087991c8453d1ec9cf54b7927040ee8582cc (patch)
tree73c1cbf9528c0d84a1260b2274ce5ee924c5a965
parentc50a90dcbfb4d93329ad5d0ca3a5ad81bdcd7c61 (diff)
remove unused function for array duplicates, assign variables with versioning wihout for loops
-rwxr-xr-xpacaur273
1 files changed, 116 insertions, 157 deletions
diff --git a/pacaur b/pacaur
index af90a27..011e379 100755
--- a/pacaur
+++ b/pacaur
@@ -33,8 +33,8 @@ usercachedir="${XDG_CACHE_HOME:-${HOME}/.cache}/pacaur"
tmpdir="${XDG_RUNTIME_DIR:-/tmp}"
# preserve environment variables
-vars=('PACMAN' 'PKGDEST' 'SRCDEST' 'SRCPKGDEST' 'LOGDEST' 'BUILDDIR' 'PKGEXT' 'SRCEXT' 'GPGKEY'
- 'PACKAGER' 'CARCH')
+vars=('PACMAN' 'PKGDEST' 'SRCDEST' 'SRCPKGDEST' 'LOGDEST' 'BUILDDIR' 'PKGEXT' 'SRCEXT'
+ 'GPGKEY' 'PACKAGER' 'CARCH')
for i in "${vars[@]}"; do
[[ "${!i}" ]] && declare _"$i"="${!i}"
done
@@ -66,14 +66,14 @@ sudoloop=true # prevent sudo timeout
# set variables
pacmanbin="${PACMAN:-pacman}" # pacman binary
-clonedir="${AURDEST:-$usercachedir}" # clone directory
+clonedir="${AURDEST:-${usercachedir:?}}" # clone directory
# source xdg config
[[ -r "$configdir/config" ]] && source "$configdir/config"
[[ -r "$userconfigdir/config" ]] && source "$userconfigdir/config"
# set up directories
-[[ ! -d "$clonedir" ]] && install -dm700 "$clonedir"
+[[ -d "$clonedir" ]] || install -dm700 "$clonedir"
# source makepkg libraries
source /usr/share/makepkg/util/parseopts.sh
@@ -88,7 +88,7 @@ if ! type -p gettext >/dev/null; then
fi
# define vcs packages
-vcs="-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$"
+vcs='-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$'
#
# Functions
@@ -111,10 +111,12 @@ ClassifyPkgs() {
noaurpkgs+=("$i")
done
[[ "${noaurpkgs[*]}" ]] &&
- norepopkgs=($(LC_ALL=C "$pacmanbin" -Sp -- "${noaurpkgs[@]}" 2>&1 >/dev/null |
- awk '{print $NF}'))
+ mapfile -t norepopkgs <<< "$(expac -Sv '' -- "${noaurpkgs[@]}" 2>&1 >/dev/null)" &&
+ norepopkgs=("${norepopkgs[@]#error: package \`}") &&
+ norepopkgs=("${norepopkgs[@]%\' not found}")
for i in "${norepopkgs[@]}"; do
- [[ ! " ${noaurpkgs[*]} " =~ [a-zA-Z0-9\.\+-]+\/"$i"[^a-zA-Z0-9\.\+-] ]] &&
+ # do not search repo/pkgs in AUR
+ [[ " ${noaurpkgs[*]} " =~ [a-zA-Z0-9\.\+-]+\/"$i"[^a-zA-Z0-9\.\+-] ]] ||
aurpkgs+=("$i") # do not search repo/pkgs in AUR
done
repopkgs=($(DiffArr 'aurpkgs' 'noaurpkgs' -v))
@@ -138,18 +140,12 @@ Core() {
}
UpgradeAur() {
- local foreignpkgs allaurpkgs allaurpkgsAver allaurpkgsQver aurforeignpkgs i json
+ local foreignpkgs allaurpkgs aurforeignpkgs i json
# global aurpkgs
Note "i" $"${colorW}Starting AUR upgrade...${reset}"
foreignpkgs=($("$pacmanbin" -Qmq))
SetJson "${foreignpkgs[@]}"
allaurpkgs=($(GetJson "$json" "Name"))
- allaurpkgsAver=($(GetJson "$json" "Version"))
- allaurpkgsQver=($(expac -Q '%v' "${allaurpkgs[@]}"))
- for i in "${!allaurpkgs[@]}"; do
- [[ "$(vercmp "${allaurpkgsAver[$i]}" "${allaurpkgsQver[$i]}")" -gt 0 ]] &&
- aurpkgs+=("${allaurpkgs[$i]}");
- done
# foreign packages check
aurforeignpkgs=($(DiffArr 'allaurpkgs' 'foreignpkgs' -v))
@@ -157,14 +153,18 @@ UpgradeAur() {
Note "w" $"${colorW}$i${reset} is ${colorY}not present${reset} in AUR -- skipping"
done
+ # use auracle to find out of date AUR packages
+ mapfile -t aurpkgs <<< "$(auracle sync -q)"
+
# add devel packages
if [[ "$devel" ]]; then
for i in "${allaurpkgs[@]}"; do
- [[ "$i" =~ $vcs ]] && aurpkgs+=("$i")
+ [[ "$i" =~ $vcs && ! " ${aurpkgs[*]} " =~ " $i " ]] && aurpkgs+=("$i")
done
fi
# avoid possible duplicate
+ # TODO: unnecessary now that devel packages are only added if they aren't already there?
aurpkgs=($(printf '%s\n' "${aurpkgs[@]}" | sort -u))
NothingToDo "${aurpkgs[@]}"
@@ -173,12 +173,10 @@ UpgradeAur() {
IgnoreChecks() {
local checkaurpkgs checkaurpkgsAver checkaurpkgsQver checkaurpkgsgrp i json
# global aurpkgs rmaurpkgs
- [[ ! "${ignoredpkgs[*]}" && ! "${ignoredgrps[*]}" ]] && return
+ [[ "${ignoredpkgs[*]}" || "${ignoredgrps[*]}" ]] || return
# remove AUR pkgs versioning
- for i in "${!aurpkgs[@]}"; do
- aurpkgsnover[$i]="${aurpkgs[$i]%%[><=]*}"
- done
+ aurpkgsnover=("${aurpkgs[@]%%[><=]*}")
# check targets
SetJson "${aurpkgsnover[@]}"
@@ -238,9 +236,7 @@ DepsSolver() {
Note "i" $"resolving dependencies..."
# remove AUR pkgs versioning
- for i in "${!aurpkgs[@]}"; do
- aurpkgsnover[$i]="${aurpkgs[$i]%%[><=]*}"
- done
+ aurpkgsnover=("${aurpkgs[@]%%[><=]*}")
# set unversioned json
SetJson "${aurpkgsnover[@]}"
@@ -248,22 +244,16 @@ DepsSolver() {
# set targets providers
aurpkgsproviders=("${aurpkgsnover[@]}")
aurpkgsproviders+=($(GetJson "$json" "Provides"))
- for i in "${!aurpkgsproviders[@]}"; do
- aurpkgsproviders[$i]="${aurpkgsproviders[$i]%%[><=]*}"
- done
+ aurpkgsproviders=("${aurpkgsproviders[@]%%[><=]*}")
# check targets conflicts
aurpkgsconflicts=($(GetJson "$json" "Conflicts"))
if [[ "${aurpkgsconflicts[*]}" ]]; then
- for i in "${!aurpkgsconflicts[@]}"; do
- aurpkgsconflicts[$i]="${aurpkgsconflicts[$i]%%[><=]*}"
- done
-
+ aurpkgsconflicts=("${aurpkgsconflicts[@]%%[><=]*}")
aurpkgsconflicts=($(DiffArr 'aurpkgsproviders' 'aurpkgsconflicts'))
- aurpkgsconflicts=($(printf '%s\n' "${aurpkgsconflicts[@]}" | sort -u))
-
+ aurpkgsconflicts=($(sort -u <<< "$(printf '%s\n' "${aurpkgsconflicts[@]}")"))
for i in "${aurpkgsconflicts[@]}"; do
- [[ ! " ${aurpkgsnover[*]} " =~ " $i " ]] && continue
+ [[ " ${aurpkgsnover[*]} " =~ " $i " ]] || continue
[[ " $(GetJson "$json" "Conflicts" "$i") " =~ " $i " ]] && continue
Note "f" $"unresolvable package conflicts detected"
Note "e" $"failed to prepare transaction (conflicting dependencies: $i)"
@@ -272,7 +262,7 @@ DepsSolver() {
deps=("${aurpkgsnover[@]}")
- [[ ! "${foreignpkgs[*]}" ]] && foreignpkgs=($("$pacmanbin" -Qmq))
+ [[ "${foreignpkgs[*]}" ]] || foreignpkgs=($("$pacmanbin" -Qmq))
FindDepsAur "${aurpkgsnover[@]}"
# avoid possible duplicate
@@ -305,7 +295,7 @@ DepsSolver() {
# find relevant tsorted deps chain
for j in "${deps[@]}"; do
tsorterrdeps+=("$j")
- [[ " $j " = " ${errdepsnover[$i]} " ]] && break
+ [[ "$j" = "${errdepsnover[$i]}" ]] && break
done
# reverse deps order
tsorterrdeps=($(awk '{for (i=NF;i>=1;i--) print $i}' <<< "${tsorterrdeps[@]}" |
@@ -335,12 +325,12 @@ FindDepsAur() {
# set json
unset aurversionpkgs
- if [[ ! "${depspkgsaur[*]}" ]]; then
- SetJson "${aurpkgsnover[@]}"
- aurversionpkgs=("${aurpkgs[@]}")
- else
+ if [[ "${depspkgsaur[*]}" ]]; then
SetJson "${depspkgsaur[@]}"
aurversionpkgs=("${prevdepspkgsaur[@]}")
+ else
+ SetJson "${aurpkgsnover[@]}"
+ aurversionpkgs=("${aurpkgs[@]}")
fi
# versioning check
@@ -366,9 +356,8 @@ FindDepsAur() {
*"<"*) [[ "$aurversionpkgsverdiff" -lt 0 ]] && continue;;
*"="*) [[ "$aurversionpkgsverdiff" -eq 0 ]] && continue;;
esac
- [[ ! " ${errdeps[*]} " =~ " ${aurversionpkgs[$i]} " ]] &&
- errdeps+=("${aurversionpkgs[$i]}")
- ;;
+ [[ " ${errdeps[*]} " =~ " ${aurversionpkgs[$i]} " ]] ||
+ errdeps+=("${aurversionpkgs[$i]}");;
*) continue;;
esac
done
@@ -399,7 +388,7 @@ FindDepsAur() {
[[ "${aurpkgsproviders[*]}" ]] && depspkgs=($(DiffArr 'aurpkgsproviders' 'depspkgs' -v))
# workaround for limited RPC support of architecture dependent fields
- if [[ "${CARCH}" == 'i686' ]]; then
+ if [[ "${CARCH}" = 'i686' ]]; then
depspkgstmp=("${depspkgs[@]}")
for i in "${!depspkgstmp[@]}"; do
[[ "${depspkgstmp[$i]}" =~ ^(lib32-|gcc-multilib) ]] &&
@@ -425,22 +414,19 @@ FindDepsAur() {
fi
done
# reorder devel
- if [[ "$devel" ]]; then
- depspkgs=($("$pacmanbin" -T -- "${depspkgs[@]}" | sort -u))
- depspkgstmp=($(DiffArr 'depspkgs' 'vcsdepspkgs' -v))
- depspkgstmp+=($(DiffArr 'vcsdepspkgs' 'depspkgs' -v))
- depspkgs=($(printf '%s\n' "${depspkgstmp[@]}" | sort -u))
- fi
+ # TODO: this can probably be replaced by deptesting {,vcs}depspkgs and sorting at once
+ depspkgs=($("$pacmanbin" -T -- "${depspkgs[@]}" | sort -u))
+ depspkgstmp=($(DiffArr 'depspkgs' 'vcsdepspkgs' -v))
+ depspkgstmp+=($(DiffArr 'vcsdepspkgs' 'depspkgs' -v))
+ depspkgs=($(printf '%s\n' "${depspkgstmp[@]}" | sort -u))
fi
- # split binary and AUR depends pkgs
+ # split repo and AUR depends pkgs
unset depspkgsaur
if [[ "${depspkgs[*]}" ]]; then
# remove all pkgs versioning
if [[ "$nodeps" && "$dcount" -eq 1 ]]; then
- for i in "${!depspkgs[@]}"; do
- depspkgs[$i]="${depspkgs[$i]%%[><=]*}"
- done
+ depspkgs=("${depspkgs[@]%%[><=]*}")
# assume installed deps
elif [[ "${assumeinstalled[*]}" ]]; then
# remove versioning
@@ -455,7 +441,9 @@ FindDepsAur() {
depspkgs=($(DiffArr 'assumeinstalled' 'depspkgs' -v))
fi
if [[ "${depspkgs[*]}" ]]; then
- depspkgsaur=($(LC_ALL=C "$pacmanbin" -Sp -- "${depspkgs[@]}" 2>&1 >/dev/null | awk '{print $NF}'))
+ mapfile -t depspkgsaur <<< "$(expac -Sv '' -- "${depspkgs[@]}" 2>&1)" &&
+ depspkgsaur=("${depspkgsaur[@]#error: package \`}") &&
+ depspkgsaur=("${depspkgsaur[@]%\' not found}")
repodeps+=($(DiffArr 'depspkgsaur' 'depspkgs' -v))
fi
fi
@@ -465,20 +453,15 @@ FindDepsAur() {
[[ "${depspkgsaur[*]}" ]] && depspkgsaur=($(DiffArr 'aurdepspkgs' 'depspkgsaur' -v))
# dependency cycle check
- [[ "${prevdepspkgsaur[*]}" ]] && [[ "${prevdepspkgsaur[*]}" = "${depspkgsaur[*]}" ]] &&
+ [[ "${prevdepspkgsaur[*]}" && "${prevdepspkgsaur[*]}" = "${depspkgsaur[*]}" ]] &&
Note "e" $"dependency cycle detected (${depspkgsaur[*]})"
if [[ "${depspkgsaur[*]}" ]]; then
# store for AUR version check
- [[ ! "$nodeps" ]] && prevdepspkgsaur=("${depspkgsaur[@]}")
+ [[ "$nodeps" ]] || prevdepspkgsaur=("${depspkgsaur[@]}")
- # remove AUR pkgs versioning
- for i in "${!depspkgsaur[@]}"; do
- depspkgsaur[$i]="${depspkgsaur[$i]%%[><=]*}"
- done
-
- # remove duplicate
- depspkgsaur=($(printf '%s\n' "${depspkgsaur[@]}" | sort -u))
+ # remove duplicates and versioning
+ depspkgsaur=($(printf '%s\n' "${depspkgsaur[@]%%[><=]*}" | sort -u))
fi
[[ "${depspkgsaur[*]}" ]] && aurdepspkgs+=("${depspkgsaur[@]}") &&
@@ -497,16 +480,14 @@ SortDepsAur() {
sortdepspkgs+=($(GetJson "$json" "Depends" "${sortaurpkgs[$i]}"))
sortdepspkgs+=($(GetJson "$json" "MakeDepends" "${sortaurpkgs[$i]}"))
- [[ "$checkdeps" ]] && depspkgs+=($(GetJson "$json" "CheckDepends"))
+ [[ "$checkdeps" ]] && sortdepspkgs+=($(GetJson "$json" "CheckDepends"))
# remove versioning
- for j in "${!errdeps[@]}"; do
- errdepsnover[$j]="${errdeps[$j]%%[><=]*}"
- done
+ errdepsnover=("${errdeps[@]%%[><=]*}")
# check AUR deps only
+ sortdepspkgs=("${sortdepspkgs[@]%%[><=]*}")
for j in "${!sortdepspkgs[@]}"; do
- sortdepspkgs[$j]="${sortdepspkgs[$j]%%[><=]*}"
sortdepspkgsaur+=($(GetJson "$json" "Name" "${sortdepspkgs[$j]}"))
# add erroneous AUR deps
[[ " ${errdepsnover[*]} " =~ " ${sortdepspkgs[$j]} " ]] &&
@@ -541,20 +522,18 @@ FindDepsAurError() {
# global errdepsnover errdepslist tsorterrdeps currenterrdep
for i in "${tsorterrdeps[@]}"; do
- [[ ! " ${errdepsnover[*]} " =~ " $i " && ! " ${errdepslist[*]} " =~ " $i " ]] &&
+ [[ " ${errdepsnover[*]} " =~ " $i " || " ${errdepslist[*]} " =~ " $i " ]] ||
nexterrdep="$i" && break
done
- [[ ! "${currenterrdep[*]}" ]] && currenterrdep="${tsorterrdeps[0]}"
+ [[ "${currenterrdep[*]}" ]] || currenterrdep="${tsorterrdeps[0]}"
if [[ ! " ${aurpkgs[*]} " =~ " $nexterrdep " ]]; then
nextallerrdeps=($(GetJson "$json" "Depends" "$nexterrdep"))
nextallerrdeps+=($(GetJson "$json" "MakeDepends" "$nexterrdep"))
- [[ "$checkdeps" ]] && depspkgs+=($(GetJson "$json" "CheckDepends"))
+ [[ "$checkdeps" ]] && nextallerrdeps+=($(GetJson "$json" "CheckDepends"))
# remove versioning
- for i in "${!nextallerrdeps[@]}"; do
- nextallerrdeps[$i]="${nextallerrdeps[$i]%%[><=]*}"
- done
+ nextallerrdeps=("${nextallerrdeps[@]%%[><=]*}")
[[ " ${nextallerrdeps[*]} " =~ " $currenterrdep " ]] && errdepslist+=("$nexterrdep") &&
currenterrdep="${tsorterrdeps[0]}"
@@ -564,12 +543,10 @@ FindDepsAurError() {
for i in "${!aurpkgs[@]}"; do
nextallerrdeps=($(GetJson "$json" "Depends" "${aurpkgs[$i]}"))
nextallerrdeps+=($(GetJson "$json" "MakeDepends" "${aurpkgs[$i]}"))
- [[ "$checkdeps" ]] && depspkgs+=($(GetJson "$json" "CheckDepends"))
+ [[ "$checkdeps" ]] && nextallerrdeps+=($(GetJson "$json" "CheckDepends"))
# remove versioning
- for j in "${!nextallerrdeps[@]}"; do
- nextallerrdeps[$j]="${nextallerrdeps[$j]%%[><=]*}"
- done
+ nextallerrdeps=("${nextallerrdeps[@]%%[><=]*}")
[[ " ${nextallerrdeps[*]} " =~ " $currenterrdep " ]] && errdepslist+=("${aurpkgs[$i]}")
done
@@ -579,17 +556,17 @@ FindDepsAurError() {
FindDepsRepo() {
local allrepodepspkgs repodepspkgstmp
# global repodeps repodepspkgs
- [[ ! "${repodeps[*]}" ]] && return
+ [[ "${repodeps[*]}" ]] || return
# reduce root binary deps
- repodeps=($(printf '%s\n' "${repodeps[@]}" | sort -u))
+ repodeps=($(sort -u <<< "$(printf '%s\n' "${repodeps[@]}")"))
# add initial repodeps
- [[ ! "${repodepspkgs[*]}" ]] && repodepspkgs=("${repodeps[@]}")
+ [[ "${repodepspkgs[*]}" ]] || repodepspkgs=("${repodeps[@]}")
- # get non installed repo deps
+ # get non installed binary deps
unset allrepodepspkgs repodepspkgstmp
- # no version check needed as all deps are binary
+ # no version check needed as all deps are repo deps
[[ "${repodeps[*]}" ]] && allrepodepspkgs=($(expac -S1 '%E' "${repodeps[@]}"))
[[ "${allrepodepspkgs[*]}" ]] &&
repodepspkgstmp=($("$pacmanbin" -T -- "${allrepodepspkgs[@]}" | sort -u))
@@ -605,7 +582,7 @@ FindDepsRepo() {
FindDepsRepoProvider() {
local allrepodepspkgs providerrepodepspkgstmp
# global repodeps repodepspkgs
- [[ ! "${providerspkgs[*]}" ]] && return
+ [[ "${providerspkgs[*]}" ]] || return
# reduce root binary deps
providerspkgs=($(printf '%s\n' "${providerspkgs[@]}" | sort -u))
@@ -742,8 +719,8 @@ ProviderChecks() {
# skip if provided in dependency chain
unset repodepspkgsprovided
- for j in "${!providers[@]}"; do
- [[ " ${repodepspkgs[*]} " =~ " ${providers[$j]} " ]] && repodepspkgsprovided='true'
+ for j in "${providers[@]}"; do
+ [[ " ${repodepspkgs[*]} " =~ " $j " ]] && repodepspkgsprovided='true'
done
[[ "$repodepspkgsprovided" ]] && continue
@@ -767,15 +744,15 @@ ProviderChecks() {
read -r nb
;;
*)
- read -r -n "$(echo -n "$providersnb" | wc -m)" nb
- echo
+ read -r -n "$(printf '%s' "$providersnb" | wc -m)" nb
+ printf '\n'
;;
esac
case "$nb" in
[0-9]|[0-9][0-9])
if [[ "$nb" -lt 0 || "$nb" -ge "${#providers[@]}" ]]; then
- echo
+ printf '\n'
Note "f" $"invalid value: $nb is not between 0 and $providersnb"
((i--))
else
@@ -810,7 +787,7 @@ ProviderChecks() {
ConflictChecks() {
local allQprovides allQconflicts Aprovides Aconflicts aurconflicts aurAconflicts Qrequires i j
- local k repodepsprovides repodepsconflicts checkedrepodepsconflicts repodepsconflictsname
+ local k l repodepsprovides repodepsconflicts checkedrepodepsconflicts repodepsconflictsname
local repodepsconflictsver localver repoconflictingpkgs
# global deps depsAname json aurdepspkgs aurconflictingpkgs aurconflictingpkgsrm depsQver
# global repodepspkgs repoconflictingpkgsrm repoprovidersconflictingpkgs
@@ -825,12 +802,8 @@ ConflictChecks() {
Aprovides+=($(GetJson "$json" "Provides"))
Aconflicts=($(GetJson "$json" "Conflicts"))
# remove AUR versioning
- for i in "${!Aprovides[@]}"; do
- Aprovides[$i]="${Aprovides[$i]%%[><=]*}"
- done
- for i in "${!Aconflicts[@]}"; do
- Aconflicts[$i]="${Aconflicts[$i]%%[><=]*}"
- done
+ Aprovides=("${Aprovides[@]%%[><=]*}")
+ Aconflicts=("${Aconflicts[@]%%[><=]*}")
aurconflicts=($(DiffArr 'Aprovides' 'allQconflicts'))
aurconflicts+=($(DiffArr 'Aconflicts' 'allQprovides'))
aurconflicts=($(printf '%s\n' "${aurconflicts[@]}" | sort -u))
@@ -845,8 +818,7 @@ ConflictChecks() {
for j in "${aurAconflicts[@]}"; do
unset k Aprovides
read -rd' ' <<< "$(expac -Qs '%n %P' "^$i$")" k
- [[ ! "$installpkg" && ! " ${aurdepspkgs[*]} " =~ " $j " ]] && continue
- # skip if downloading only
+ [[ ! "$installpkg" && ! " ${aurdepspkgs[*]} " =~ " $j " ]] && continue # download only
[[ "$j" = "$k" || ! "$k" ]] && continue # skip if reinstalling or if no conflict exists
Aprovides=("$j")
@@ -860,9 +832,7 @@ ConflictChecks() {
done
Aprovides+=($(GetJson "$json" "Provides" "$j"))
# remove AUR versioning
- for l in "${!Aprovides[@]}"; do
- Aprovides[$l]="${Aprovides[$l]%%[><=]*}"
- done
+ Aprovides=("${Aprovides[@]%%[><=]*}")
[[ ! " ${Aprovides[*]} ${aurconflictingpkgsrm[*]} " =~ " $k " ]] &&
CheckRequires "$k"
break
@@ -879,9 +849,7 @@ ConflictChecks() {
fi
Aprovides+=($(GetJson "$json" "Provides" "$j"))
# remove AUR versioning
- for l in "${!Aprovides[@]}"; do
- Aprovides[$l]="${Aprovides[$l]%%[><=]*}"
- done
+ Aprovides=("${Aprovides[@]%%[><=]*}")
[[ ! " ${Aprovides[*]} ${aurconflictingpkgsrm[*]} " =~ " $k " ]] && CheckRequires "$k"
done
done
@@ -900,8 +868,8 @@ ConflictChecks() {
unset repodepsconflictsname repodepsconflictsver localver
repodepsconflictsname="${repodepsconflicts[$i]%%[><=]*}"
repodepsconflictsver="${repodepsconflicts[$i]##*[><=]}"
- [[ "$repodepsconflictsname" ]] && localver="$(expac -Q '%v' "$repodepsconflictsname")"
- repodepsconflictsverdiff="$(vercmp "$repodepsconflictsver" "$localver")"
+ local localver="$(expac -Q '%v' "$repodepsconflictsname")"
+ local repodepsconflictsverdiff="$(vercmp "$repodepsconflictsver" "$localver")"
if [[ "$localver" ]]; then
case "${repodepsconflicts[$i]}" in
@@ -917,7 +885,7 @@ ConflictChecks() {
repoconflicts+=($(DiffArr 'repodepsprovides' 'allQconflicts'))
repoconflicts+=($(DiffArr 'checkedrepodepsconflicts' 'allQprovides'))
- repoconflicts=($(printf '%s\n' "${repoconflicts[@]}" | sort -u))
+ repoconflicts=($(sort -u <<< "$(printf '%s\n' "${repoconflicts[@]}")"))
fi
for i in "${repoconflicts[@]}"; do
@@ -1067,14 +1035,15 @@ Prompt() {
fi
if [[ "${repodepspkgs[*]}" ]]; then
- strrepodlsize=$"Repo Download Size:"; strrepoinsize=$"Repo Installed Size:"; strsumk=$"$sumk MiB"; strsumm=$"$summ 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"
printf "${colorW}%-${lreposizelabel}s${reset} %${lreposize}s\n" "$strrepoinsize" "$strsumm"
fi
- echo
+ printf '\n'
if [[ "$installpkg" ]]; then
Proceed "y" $"Proceed with installation?" || exit
else
@@ -1188,8 +1157,8 @@ EditPkgs() {
}
MakePkgs() {
- local i j oldorphanpkgs neworphanpkgs orphanpkgs oldoptionalpkgs newoptionalpkgs optionalpkgs
- local errinstall pkgsdepslist vcsclients vcschecked list aurdevelpkgsAver aurdevelpkgsQver
+ local i j k oldorphanpkgs neworphanpkgs orphanpkgs oldoptionalpkgs newoptionalpkgs optionalpkgs
+ local errinstall pkgsdepslist vcsclients vcschecked aurdevelpkgsAver aurdevelpkgsQver
local builtpkgs builtdepspkgs basepkgsupdate checkpkgsdepslist isaurdeps makedeps
# global deps basepkgs sudoloop pkgsbase pkgsdeps aurpkgs aurdepspkgs builtpkg errmakepkg json
# global repoprovidersconflictingpkgs
@@ -1211,8 +1180,8 @@ MakePkgs() {
# split packages support
for i in "${!pkgsbase[@]}"; do
for j in "${!deps[@]}"; do
- [[ "${pkgsbase[$i]}" = "${pkgsbase[$j]}" ]] &&
- [[ ! " ${pkgsdeps[*]} " =~ " ${deps[$j]} " ]] && pkgsdeps+=("${deps[$j]}")
+ [[ "${pkgsbase[$i]}" = "${pkgsbase[$j]}" && ! " ${pkgsdeps[*]} " =~ " ${deps[$j]} " ]] &&
+ pkgsdeps+=("${deps[$j]}")
done
pkgsdeps+=("#")
done
@@ -1247,7 +1216,7 @@ MakePkgs() {
unset makedeps
for j in "${vcsclients[@]}"; do
if [[ ! "${vcschecked[*]}" =~ "$j" ]]; then
- expac -Qs '' "^$j$" || sudo "$pacmanbin" -S "$j" --asdeps --noconfirm
+ expac -Qs '' "^$j$" || sudo "$pacmanbin" -S --asdeps --noconfirm -- "$j"
vcschecked+=("$j")
fi
done
@@ -1299,19 +1268,15 @@ MakePkgs() {
pkgsdepslist=($(awk -F "," '{for (k=1;k<=NF;k++) print $k}' <<< "${pkgsdeps[$i]}"))
cd "$clonedir/${basepkgs[$i]}" || exit 1
-
# retrieve updated version
- unset list && mapfile -t -d'-' list <<< "$(makepkg --packagelist)"
- # map packagelist output to array 'list', using the -es from the file name as delimiters
- # then we can take the version as the 3rd element from the end, the first being arch and
- # pkgext, and the second being pkgrel
- aurdevelpkgsAver="${list[(("${#list[@]}"-3))]}"
+ mapfile -t -d'-' k <<< "$(makepkg --packagelist)" && aurdevelpkgsAver="${k[1]}-${k[2]}"
+ unset k
# build devel if necessary only (supported protocols only)
if [[ "${basepkgs[$i]}" =~ $vcs ]]; then
# check split packages update
unset basepkgsupdate checkpkgsdepslist
for j in "${pkgsdepslist[@]}"; do
- read -rd' ' <<< "$(expac -Qs '%v' "^$j$")" aurdevelpkgsQver
+ read -rd' ' <<< "$(expac -Qs '%v' "^$j$")" aurdevelpkgsQver
if [[ "$needed" && ! "$rebuild" && "$aurdevelpkgsQver" ]] &&
[[ "$(vercmp "$aurdevelpkgsQver" "$aurdevelpkgsAver")" -ge 0 ]]; then
Note "w" $"${colorW}$j${reset} is up-to-date -- skipping" && continue
@@ -1330,8 +1295,8 @@ MakePkgs() {
if [[ "$builtpkg" ]]; then
if [[ " ${aurdepspkgs[*]} " =~ " $j " || "$installpkg" ]]; then
Note "i" $"Installing ${colorW}$j${reset} cached package..."
- sudo "$pacmanbin" -U "$builtpkg" --ask 36 "${pacopts[@]/--quiet}" --noconfirm
- [[ ! " ${aurpkgs[*]} " =~ " $j " ]] &&
+ sudo "$pacmanbin" -U --ask 36 "${pacopts[@]/--quiet}" --noconfirm -- "$builtpkg"
+ [[ " ${aurpkgs[*]} " =~ " $j " ]] ||
sudo "$pacmanbin" -D "$j" --asdeps "${pacopts[@]}" &>/dev/null
else
Note "w" $"Package ${colorW}$j${reset} already available in cache"
@@ -1378,9 +1343,9 @@ MakePkgs() {
done
# install
- if [[ $installpkg || ! "${builtpkgs[*]}" ]]; then
+ if [[ "$installpkg" || ! "${builtpkgs[*]}" ]]; then
Note "i" $"Installing ${colorW}${pkgsdeps[$i]}${reset} package(s)..."
- sudo "$pacmanbin" -U "${builtdepspkgs[@]}" "${builtpkgs[@]}" --ask 36 "${pacopts[@]/--quiet}" --noconfirm
+ sudo "$pacmanbin" -U --ask 36 "${pacopts[@]/--quiet}" --noconfirm -- "${builtdepspkgs[@]}" "${builtpkgs[@]}"
fi
# set dep status
@@ -1432,7 +1397,7 @@ MakePkgs() {
}
CheckUpdates() {
- local i json foreignpkgs foreignpkgsbase aurpkgsQood aurpkgsAname aurpkgsAver aurpkgsQver
+ local i j json foreignpkgs foreignpkgsbase aurpkgsQood aurpkgsAname aurpkgsAver aurpkgsQver
local aurpkgsQignore aurdevelpkgsAver aurdevelpkgsQver aurpkgsQoodAver
# global aur repo
@@ -1457,7 +1422,7 @@ CheckUpdates() {
if [[ "$devel" ]]; then
if [[ ! "$needed" ]]; then
for i in "${foreignpkgs[@]}"; do
- [[ "$i" =~ $vcs ]]&& aurpkgsQood+=("$i")
+ [[ "$i" =~ $vcs ]] && aurpkgsQood+=("$i")
done
else
foreignpkgsbase=($(expac -Q '%n %e' "${foreignpkgs[@]}" |
@@ -1471,15 +1436,12 @@ CheckUpdates() {
# silent extraction and pkgver update only
makepkg -od --noprepare --skipinteg &>/dev/null
# retrieve updated version
- aurdevelpkgsAver="$(makepkg --packagelist |
- awk -F "-" '{print $(NF-2)"-"$(NF-1)}' | head -1)"
+ mapfile -t -d'-' j <<< "$(makepkg --packagelist)"
+ aurdevelpkgsAver="${j[1]}-${j[2]}" && unset j
read -rd' ' <<< "$(expac -Qs '%v' "^${foreignpkgsbase[$i]}$")" aurdevelpkgsQver
- if [[ "$(vercmp "$aurdevelpkgsQver" "$aurdevelpkgsAver")" -ge 0 ]]; then
- continue
- else
- aurpkgsQood+=("${foreignpkgsnobase[$i]}")
+ [[ "$(vercmp "$aurdevelpkgsQver" "$aurdevelpkgsAver")" -ge 0 ]] ||
+ aurpkgsQood+=("${foreignpkgsnobase[$i]}") &&
aurpkgsQoodAver+=("$aurdevelpkgsAver")
- fi
fi
done
fi
@@ -1524,7 +1486,7 @@ CleanCache() {
if [[ "$ccount" -eq 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..."
- for i in $(ls "$PKGDEST" | sed "s%\(.*\)-.*%\1%g"); do
+ for i in $(basename -a "$PKGDEST"/* | sed "s%\(.*\)-.*%\1%g"); do
pkgname="$(sed "s%\(.*\)-.*-.*%\1%g" <<< "$i")"
[[ "$i" != "$(expac -Q '%n-%v' "$pkgname")" ]] && rm "${PKGDEST:?}/$i"-*
done
@@ -1564,7 +1526,7 @@ CleanCache() {
awk '{if ($2 == "(null)") print $1; else print $2}'))
# get target
if [[ "${pkgs[*]}" ]]; then
- pkgsbase=($(expac -Q %e "${pkgs[@]}"))
+ pkgsbase=($(expac -Q '%e' "${pkgs[@]}"))
aurpkgsbase=($(DiffArr 'pkgsbase' 'foreignpkgsbase'))
if Proceed "y" $"Do you want to remove ${aurpkgsbase[*]} clones from AUR clone directory?"; then
printf "%s\n\n" $"removing uninstalled clones from AUR clone cache..."
@@ -1629,8 +1591,8 @@ GetBuiltPkg() {
# check PKGEXT suffixe first, then default .xz suffix for repository packages in pacman cache
# and lastly all remaining suffixes in case PKGEXT is locally overridden
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"
+ builtpkg="$2/$1-${CARCH}${ext}"
+ [[ ! -f "$builtpkg" ]] && builtpkg="$2/$1-any${ext}"
[[ -f "$builtpkg" ]] && break
done
[[ ! -f "$builtpkg" ]] && unset builtpkg
@@ -1644,8 +1606,7 @@ GetPkgbase() {
pkgsbase+=($(GetJson "$json" "PackageBase" "$i"))
done
for i in "${pkgsbase[@]}"; do
- [[ " ${basepkgs[*]} " =~ " $i " ]] && continue
- basepkgs+=("$i")
+ [[ " ${basepkgs[*]} " =~ " $i " ]] || basepkgs+=("$i")
done
}
@@ -1655,9 +1616,7 @@ SetJson() {
json="{}"
else
# global json
- if [[ ! "${jsoncache[$@]}" ]]; then
- jsoncache[$@]="$(auracle rawinfo -- "$@")"
- fi
+ [[ "${jsoncache[$@]}" ]] || jsoncache[$@]="$(auracle rawinfo -- "$@")"
json="${jsoncache[$@]}"
fi
}
@@ -1684,7 +1643,7 @@ Proceed() {
[[ "$TERM" = dumb || "$cleancache" ]] && local readline=1
case "$1" in
y) printf "${colorB}%s${reset} ${colorW}%s${reset}" "::" "$2 [Y/n] "
- [[ "$noconfirm" ]] && echo && return 0
+ [[ "$noconfirm" ]] && printf '\n' && return 0
while true; do
if [[ "$readline" ]]; then
read -r answer
@@ -1698,7 +1657,7 @@ Proceed() {
esac
done;;
n) printf "${colorB}%s${reset} ${colorW}%s${reset}" "::" "$2 [y/N] "
- [[ "$noconfirm" ]] && echo && return 0
+ [[ "$noconfirm" ]] && printf '\n' && return 0
while true; do
if [[ "$readline" ]]; then
read -r answer
@@ -1712,16 +1671,16 @@ Proceed() {
esac
done;;
esac
- [[ ! "$readline" ]] && echo "$answer"
+ [[ ! "$readline" ]] && printf '%s\n' "$answer"
return "$ret"
}
Note() {
case "$1" in
- i) echo -e "${colorB}::${reset} $2";; # info
- w) echo -e "${colorY}warning:${reset} $2" >&2;; # warn
- f) echo -e "${colorR}error:${reset} $2" >&2;; # fail
- e) echo -e "${colorR}error:${reset} $2" >&2; # error
+ i) printf '%b\n' "${colorB}::${reset} $2";; # info
+ w) printf '%b\n' "${colorY}warning:${reset} $2" >&2;; # warn
+ f) printf '%b\n' "${colorR}error:${reset} $2" >&2;; # fail
+ e) printf '%b\n' "${colorR}error:${reset} $2" >&2; # error
exit 1;;
esac
}
@@ -1732,11 +1691,11 @@ GetLength() {
x="${#i}"
[[ "$x" -gt "$length" ]] && length="$x"
done
- echo "$length"
+ printf '%s\n' "$length"
}
NothingToDo() {
- [[ ! "$*" ]] && printf "%s\n" $" there is nothing to do" && exit || return 0
+ [[ ! "$*" ]] && printf '%s\n' $" there is nothing to do" && exit || return 0
}
SudoV() {
@@ -1755,7 +1714,7 @@ DiffArr() {
trap Cancel INT
Cancel() {
- echo
+ printf '\n'
rm -f "${tmpdir:?}"/pacaur.{build,sudov}.lck
exit
}
@@ -1846,7 +1805,7 @@ while true; do
--silent) silent=true; pacopts+=("--quiet"); auropts+=("--quiet") makeopts+=("--log");;
-y|--refresh) refresh=1;;
-h|--help) unset operation; (("$pac"==0)) && Usage;;
- -v|--version) [[ "$pac" -eq 0 || "$1" = --version ]] && echo "pacaur $version" && exit 0;;
+ -v|--version) [[ "$pac" -eq 0 || "$1" = --version ]] && printf '%s\n' "pacaur $version" && exit 0;;
--) shift; break;;
esac
shift
@@ -1875,16 +1834,16 @@ fi
# sanity check
[[ "$aur" ]] && unset refresh
[[ "$pacS" && "$cleancache" ]] && unset search info upgrade
-(("$pac">1)) && Note "e" $"only one operation may be used at a time"
+[[ "$pac" -gt 1 ]] && Note "e" $"only one operation may be used at a time"
[[ "$operation" = sync && ! "$search" && ! "$info" && ! "$cleancache" && "$EUID" -eq 0 ]] &&
Note "e" $"you cannot perform this operation as root"
[[ "$pacS" && "$search" && "$info" ]] &&
Note "e" $"invalid option: '--info' and '--search' may not be used together"
-[[ ! "$(command -v "${editor%% *}")" ]] &&
+[[ "$(command -v "${editor%% *}")" ]] ||
Note "e" $"${colorW}\$VISUAL${reset} and ${colorW}\$EDITOR${reset} environment variables not set or defined ${colorW}editor${reset} not found"
[[ "$PACMAN" = "${0##*/}" ]] &&
Note "e" $"you cannot use ${colorW}pacaur${reset} as PACMAN environment variable"
-[[ ! -w "$clonedir" ]] && Note "e" $"${colorW}$clonedir${reset} does not have write permission"
+[[ -w "$clonedir" ]] || Note "e" $"${colorW}$clonedir${reset} does not have write permission"
[[ ! "${pkgs[*]}" && ! "${refresh}${upgrade}${cleancache}" && "$operation" =~ (sync|edit) ]] &&
Note "e" $"no targets specified (use -h for help)"
[[ ! "${pkgs[*]}" && " ${pacmanarg[*]} " =~ ' '-[RU]' ' && ! " ${pacmanarg[*]} " =~ ' -h ' ]] &&