diff options
author | e5ten <e5ten.arch@gmail.com> | 2019-04-15 13:16:41 -0400 |
---|---|---|
committer | e5ten <e5ten.arch@gmail.com> | 2019-05-03 13:59:35 -0400 |
commit | 40ff6f73c1a5f18f45bb4c1b329495d095b25efe (patch) | |
tree | b77750c40ac044cd786fc9795f0c4952448d1a15 | |
parent | b3f3c2d6d03133057a5929450cfb91c73169373b (diff) |
syntactic changes, mainly quoting, * instead of @ in checking for array in [[]], etc.
-rw-r--r-- | config | 2 | ||||
-rwxr-xr-x | pacaur | 991 |
2 files changed, 495 insertions, 498 deletions
@@ -14,6 +14,6 @@ #fallback=true # pacman fallback to the AUR #silent=false # silence output #sortby=name # sort method (name|votes|popularity) -#sortorder=descending # sort order (ascending|descending) +#sortorder=ascending # sort order (ascending|descending) #sudoloop=true # prevent sudo timeout @@ -1,4 +1,5 @@ #!/bin/bash +# shellcheck disable=SC2076,SC2207 # # pacaur: an AUR helper that minimizes user interaction @@ -36,7 +37,7 @@ tmpdir="${XDG_RUNTIME_DIR:-/tmp}" # preserve environment variables var=('PACMAN' 'PKGDEST' 'SRCDEST' 'SRCPKGDEST' 'LOGDEST' 'BUILDDIR' 'PKGEXT' 'SRCEXT' 'GPGKEY' 'PACKAGER' 'CARCH') for i in "${var[@]}"; do - [[ -n "${!i}" ]] && declare "_${i}"="${!i}" + [[ "${!i}" ]] && declare _"$i"="${!i}" done # source makepkg variables @@ -53,17 +54,17 @@ fi # restore environment variables for i in "${var[@]}"; do - j="_${i}"; declare "${i}"="${!j:-${!i}}" && unset j + j="_$i" && declare "$i"="${!j:-${!i}}" && unset j done # set default config variables editor="${VISUAL:-${EDITOR:-vi}}" # build files editor -displaybuildfiles=diff # display build files (none|diff|full) -fallback=true # pacman fallback to the AUR -silent=false # silence output -sortby=name # sort method (name|votes|popularity) -sortorder=descending # sort order (ascending|descending) -sudoloop=true # prevent sudo timeout +displaybuildfiles='diff' # display build files (none|diff|full) +fallback='true' # pacman fallback to the AUR +silent='false' # silence output +sortby='name' # sort method (name|votes|popularity) +sortorder='ascending' # sort order (ascending|descending) +sudoloop='true' # prevent sudo timeout # set variables pacmanbin="${PACMAN:-pacman}" # pacman binary @@ -74,7 +75,7 @@ source "$configdir/config" [[ -r "$userconfigdir/config" ]] && source "$userconfigdir/config" # set up directories -[[ ! -d "$clonedir" ]] && mkdir -p "$clonedir" -m 700 +[[ ! -d "$clonedir" ]] && install -dm700 "$clonedir" # source makepkg libraries source /usr/share/makepkg/util/parseopts.sh @@ -95,33 +96,33 @@ fi ClassifyPkgs() { local noaurpkgs norepopkgs # global aurpkgs repopkgs - if [[ $fallback = true ]]; then - [[ $repo ]] && repopkgs=(${pkgs[@]}) - if [[ $aur ]]; then + if [[ "$fallback" = true ]]; then + [[ "$repo" ]] && repopkgs=("${pkgs[@]}") + if [[ "$aur" ]]; then for i in "${pkgs[@]}"; do - [[ $i == aur/* ]] && aurpkgs+=(${i:4}) && continue # search aur/pkgs in AUR - aurpkgs+=($i) + [[ "$i" = aur/* ]] && aurpkgs+=("${i:4}") && continue # search aur/pkgs in AUR + aurpkgs+=("$i") done fi - if [[ ! $repo && ! $aur ]]; then + if [[ ! "$repo" && ! "$aur" ]]; then unset noaurpkgs for i in "${pkgs[@]}"; do - [[ $i == aur/* ]] && aurpkgs+=(${i:4}) && continue # search aur/pkgs in AUR - noaurpkgs+=($i) + [[ "$i" = aur/* ]] && aurpkgs+=("${i:4}") && continue # search aur/pkgs in AUR + noaurpkgs+=("$i") done - [[ -n "${noaurpkgs[@]}" ]] && norepopkgs=($(LC_ALL=C $pacmanbin -Sp ${noaurpkgs[@]} 2>&1 >/dev/null | awk '{print $NF}')) + [[ -n "${noaurpkgs[*]}" ]] && norepopkgs=($(LC_ALL=C "$pacmanbin" -Sp "${noaurpkgs[@]}" 2>&1 >/dev/null | awk '{print $NF}')) for i in "${norepopkgs[@]}"; do - [[ ! " ${noaurpkgs[@]} " =~ [a-zA-Z0-9\.\+-]+\/$i[^a-zA-Z0-9\.\+-] ]] && aurpkgs+=($i) # 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=($(grep -xvf <(printf '%s\n' "${aurpkgs[@]}") <(printf '%s\n' "${noaurpkgs[@]}"))) fi else - if [[ ! $aur ]]; then - repopkgs=(${pkgs[@]}) + if [[ ! "$aur" ]]; then + repopkgs=("${pkgs[@]}") else for i in "${pkgs[@]}"; do - [[ $i == aur/* ]] && aurpkgs+=(${i:4}) && continue # search aur/pkgs in AUR - aurpkgs+=($i) + [[ "$i" = aur/* ]] && aurpkgs+=("${i:4}") && continue # search aur/pkgs in AUR + aurpkgs+=("$i") done fi fi @@ -130,7 +131,7 @@ ClassifyPkgs() { Core() { GetIgnoredPkgs GetIgnoredGrps - [[ $upgrade ]] && UpgradeAur + [[ "$upgrade" ]] && UpgradeAur IgnoreChecks DepsSolver IgnoreDepsChecks @@ -148,12 +149,12 @@ UpgradeAur() { # global aurpkgs Note "i" $"${colorW}Starting AUR upgrade...${reset}" foreignpkgs=($($pacmanbin -Qmq)) - SetJson ${foreignpkgs[@]} + SetJson "${foreignpkgs[@]}" allaurpkgs=($(GetJson "$json" "Name")) allaurpkgsAver=($(GetJson "$json" "Version")) - allaurpkgsQver=($(expac -Q '%v' ${allaurpkgs[@]})) + allaurpkgsQver=($(expac -Q '%v' "${allaurpkgs[@]}")) for i in "${!allaurpkgs[@]}"; do - [[ $(vercmp "${allaurpkgsAver[$i]}" "${allaurpkgsQver[$i]}") -gt 0 ]] && aurpkgs+=(${allaurpkgs[$i]}); + [[ "$(vercmp "${allaurpkgsAver[$i]}" "${allaurpkgsQver[$i]}")" -gt 0 ]] && aurpkgs+=("${allaurpkgs[$i]}"); done # foreign packages check @@ -163,30 +164,30 @@ UpgradeAur() { done # add devel packages - if [[ $devel ]]; then + if [[ "$devel" ]]; then for i in "${allaurpkgs[@]}"; do - [[ -n "$(grep -E "\-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$" <<< $i)" ]] && aurpkgs+=($i) + grep -qE "\-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$" <<< "$i" && aurpkgs+=("$i") done fi # avoid possible duplicate - aurpkgs=($(tr ' ' '\n' <<< ${aurpkgs[@]} | sort -u)) + aurpkgs=($(tr ' ' '\n' <<< "${aurpkgs[@]}" | sort -u)) - NothingToDo ${aurpkgs[@]} + NothingToDo "${aurpkgs[@]}" } IgnoreChecks() { local checkaurpkgs checkaurpkgsAver checkaurpkgsAgrp checkaurpkgsQver checkaurpkgsQgrp i json # global aurpkgs rmaurpkgs - [[ -z "${ignoredpkgs[@]}" && -z "${ignoredgrps[@]}" ]] && return + [[ -z "${ignoredpkgs[*]}" && -z "${ignoredgrps[*]}" ]] && return # remove AUR pkgs versioning for i in "${!aurpkgs[@]}"; do - aurpkgsnover[$i]=$(awk -F ">|<|=" '{print $1}' <<< ${aurpkgs[$i]}) + aurpkgsnover[$i]="$(awk -F ">|<|=" '{print $1}' <<< "${aurpkgs[$i]}")" done # check targets - SetJson ${aurpkgsnover[@]} + SetJson "${aurpkgsnover[@]}" checkaurpkgs=($(GetJson "$json" "Name")) errdeps+=($(grep -xvf <(printf '%s\n' "${aurpkgsnover[@]}") <(printf '%s\n' "${checkaurpkgs[@]}"))) errdeps+=($(grep -xvf <(printf '%s\n' "${checkaurpkgs[@]}") <(printf '%s\n' "${aurpkgsnover[@]}"))) @@ -195,106 +196,101 @@ IgnoreChecks() { checkaurpkgsAver=($(GetJson "$json" "Version")) checkaurpkgsQver=($(expac -Q '%v' "${checkaurpkgs[@]}")) for i in "${!checkaurpkgs[@]}"; do - [[ -n "$(grep -E "\-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$" <<< ${checkaurpkgs[$i]})" ]] && checkaurpkgsAver[$i]=$"latest" + grep -qE "\-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$" <<< "${checkaurpkgs[$i]}" && checkaurpkgsAver[$i]=$"latest" done for i in "${!checkaurpkgs[@]}"; do unset isignored - if [[ " ${ignoredpkgs[@]} " =~ " ${checkaurpkgs[$i]} " ]]; then + if [[ " ${ignoredpkgs[*]} " =~ " ${checkaurpkgs[$i]} " ]]; then isignored=true - elif [[ -n "${ignoredgrps[@]}" ]]; then + elif [[ -n "${ignoredgrps[*]}" ]]; then unset checkaurpkgsAgrp checkaurpkgsQgrp checkaurpkgsAgrp=($(GetJson "$json" "Groups" "${checkaurpkgs[$i]}")) for j in "${checkaurpkgsAgrp[@]}"; do - [[ " ${ignoredgrps[@]} " =~ " $j " ]] && isignored=true + [[ " ${ignoredgrps[*]} " =~ " $j " ]] && isignored=true done checkaurpkgsQgrp=($(expac -Q '%G' "${checkaurpkgs[$i]}")) for j in "${checkaurpkgsQgrp[@]}"; do - [[ " ${ignoredgrps[@]} " =~ " $j " ]] && isignored=true + [[ " ${ignoredgrps[*]} " =~ " $j " ]] && isignored=true done fi - if [[ $isignored = true ]]; then - if [[ ! $upgrade ]]; then - if [[ ! $noconfirm ]]; then + if [[ "$isignored" = true ]]; then + if [[ ! "$upgrade" ]]; then + if [[ ! "$noconfirm" ]]; then if ! Proceed "y" $"${checkaurpkgs[$i]} is in IgnorePkg/IgnoreGroup. Install anyway?"; then Note "w" $"skipping target: ${colorW}${checkaurpkgs[$i]}${reset}" - rmaurpkgs+=(${checkaurpkgs[$i]}) + rmaurpkgs+=("${checkaurpkgs[$i]}") continue fi else Note "w" $"skipping target: ${colorW}${checkaurpkgs[$i]}${reset}" - rmaurpkgs+=(${checkaurpkgs[$i]}) + rmaurpkgs+=("${checkaurpkgs[$i]}") continue fi else Note "w" $"${colorW}${checkaurpkgs[$i]}${reset}: ignoring package upgrade (${colorR}${checkaurpkgsQver[$i]}${reset} => ${colorG}${checkaurpkgsAver[$i]}${reset})" - rmaurpkgs+=(${checkaurpkgs[$i]}) + rmaurpkgs+=("${checkaurpkgs[$i]}") continue fi fi - aurpkgsnover+=(${checkaurpkgs[$i]}) + aurpkgsnover+=("${checkaurpkgs[$i]}") done - aurpkgs=(${aurpkgsnover[@]}) - NothingToDo ${aurpkgs[@]} + aurpkgs=("${aurpkgsnover[@]}") + NothingToDo "${aurpkgs[@]}" } DepsSolver() { - local i aurpkgsname aurpkgsver aurpkgsaurver aurpkgsconflicts + local i aurpkgsconflicts # global aurpkgs aurpkgsnover aurpkgsproviders aurdeps deps json errdeps errdepsnover foreignpkgs repodeps depsAname depsAver depsAood depsQver Note "i" $"resolving dependencies..." # remove AUR pkgs versioning for i in "${!aurpkgs[@]}"; do - aurpkgsnover[$i]=$(awk -F ">|<|=" '{print $1}' <<< ${aurpkgs[$i]}) + aurpkgsnover[$i]=$(awk -F ">|<|=" '{print $1}' <<< "${aurpkgs[$i]}") done # set unversioned json - SetJson ${aurpkgsnover[@]} + SetJson "${aurpkgsnover[@]}" # set targets providers - aurpkgsproviders=(${aurpkgsnover[@]}) + aurpkgsproviders=("${aurpkgsnover[@]}") aurpkgsproviders+=($(GetJson "$json" "Provides")) for i in "${!aurpkgsproviders[@]}"; do - aurpkgsproviders[$i]=$(awk -F ">|<|=" '{print $1}' <<< ${aurpkgsproviders[$i]}) + aurpkgsproviders[$i]=$(awk -F ">|<|=" '{print $1}' <<< "${aurpkgsproviders[$i]}") done # check targets conflicts aurpkgsconflicts=($(GetJson "$json" "Conflicts")) - if [[ -n "${aurpkgsconflicts[@]}" ]]; then + if [[ -n "${aurpkgsconflicts[*]}" ]]; then for i in "${!aurpkgsconflicts[@]}"; do - aurpkgsconflicts[$i]=$(awk -F ">|<|=" '{print $1}' <<< ${aurpkgsconflicts[$i]}) + aurpkgsconflicts[$i]=$(awk -F ">|<|=" '{print $1}' <<< "${aurpkgsconflicts[$i]}") done aurpkgsconflicts=($(grep -xf <(printf '%s\n' "${aurpkgsproviders[@]}") <(printf '%s\n' "${aurpkgsconflicts[@]}"))) - aurpkgsconflicts=($(tr ' ' '\n' <<< ${aurpkgsconflicts[@]} | sort -u)) + aurpkgsconflicts=($(tr ' ' '\n' <<< "${aurpkgsconflicts[@]}" | sort -u)) 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)" done fi - deps=(${aurpkgsnover[@]}) + deps=("${aurpkgsnover[@]}") - [[ -z "${foreignpkgs[@]}" ]] && foreignpkgs=($($pacmanbin -Qmq)) - FindDepsAur ${aurpkgsnover[@]} + [[ -z "${foreignpkgs[*]}" ]] && foreignpkgs=($("$pacmanbin" -Qmq)) + FindDepsAur "${aurpkgsnover[@]}" # avoid possible duplicate deps=($(grep -xvf <(printf '%s\n' "${aurdepspkgs[@]}") <(printf '%s\n' "${deps[@]}"))) - deps+=(${aurdepspkgs[@]}) + deps+=("${aurdepspkgs[@]}") # ensure correct dependency order - SetJson ${deps[@]} - SortDepsAur ${aurpkgs[@]} - deps=($(tsort <<< ${tsortdeps[@]})) - - # error check - if (($? > 0)); then - Note "e" $"dependency cycle detected" - fi + SetJson "${deps[@]}" + SortDepsAur "${aurpkgs[@]}" + deps=($(tsort <<< "${tsortdeps[@]}")) || Note "e" $"dependency cycle detected" # get AUR packages info depsAname=($(GetJson "$json" "Name")) @@ -304,26 +300,26 @@ DepsSolver() { for i in "${!depsAname[@]}"; do depsQver[$i]=$(expac -Qs '%v' "^${depsAname[$i]}$" | head -1) [[ -z "${depsQver[$i]}" ]] && depsQver[$i]="#" # avoid empty elements shift - [[ -n "$(grep -E "\-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$" <<< ${depsAname[$i]})" ]] && depsAver[$i]=$"latest" + grep -qE "\-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$" <<< "${depsAname[$i]}" && depsAver[$i]=$"latest" done # no results check - if [[ -n "${errdeps[@]}" ]]; then + if [[ -n "${errdeps[*]}" ]]; then for i in "${!errdepsnover[@]}"; do - if [[ " ${aurpkgsnover[@]} " =~ " ${errdepsnover[$i]} " ]]; then + if [[ " ${aurpkgsnover[*]} " =~ " ${errdepsnover[$i]} " ]]; then Note "f" $"no results found for ${errdeps[$i]}" else unset tsorterrdeps errdepslist currenterrdep # find relevant tsorted deps chain for j in "${deps[@]}"; do - tsorterrdeps+=($j) + tsorterrdeps+=("$j") [[ " $j " = " ${errdepsnover[$i]} " ]] && break done # reverse deps order - tsorterrdeps=($(awk '{for (i=NF;i>=1;i--) print $i}' <<< ${tsorterrdeps[@]} | awk -F "\n" '{print}')) - errdepslist+=(${tsorterrdeps[0]}) - FindDepsAurError ${tsorterrdeps[@]} - errdepslist=($(awk '{for (i=NF;i>=1;i--) print $i}' <<< ${errdepslist[@]} | awk -F "\n" '{print}')) + tsorterrdeps=($(awk '{for (i=NF;i>=1;i--) print $i}' <<< "${tsorterrdeps[@]}" | awk -F "\n" '{print}')) + errdepslist+=("${tsorterrdeps[0]}") + FindDepsAurError "${tsorterrdeps[@]}" + errdepslist=($(awk '{for (i=NF;i>=1;i--) print $i}' <<< "${errdepslist[@]}" | awk -F "\n" '{print}')) Note "f" $"no results found for ${errdeps[$i]} (dependency tree: ${errdepslist[*]})" fi done @@ -331,30 +327,30 @@ DepsSolver() { fi # return all binary deps - FindDepsRepo ${repodeps[@]} + FindDepsRepo "${repodeps[@]}" # avoid possible duplicate - repodepspkgs=($(tr ' ' '\n' <<< ${repodepspkgs[@]} | sort -u)) + repodepspkgs=($(tr ' ' '\n' <<< "${repodepspkgs[@]}" | sort -u)) } FindDepsAur() { - local depspkgs depspkgstmp depspkgsaurtmp repodepstmp builtpkg vcsdepspkgs assumedepspkgs + local depspkgs depspkgstmp depspkgsaurtmp builtpkg vcsdepspkgs assumedepspkgs local aurversionpkgs aurversionpkgsname aurversionpkgsver aurversionpkgsaurver i j json # global aurpkgsnover depspkgsaur errdeps depsAname depsAver repodeps aurdepspkgs prevdepspkgsaur foreignpkgs - [[ $nodeps && $dcount -ge 2 ]] && return + [[ "$nodeps" && "$dcount" -ge 2 ]] && return # set json unset aurversionpkgs - if [[ -z "${depspkgsaur[@]}" ]]; then - SetJson ${aurpkgsnover[@]} - aurversionpkgs=(${aurpkgs[@]}) + if [[ -z "${depspkgsaur[*]}" ]]; then + SetJson "${aurpkgsnover[@]}" + aurversionpkgs=("${aurpkgs[@]}") else - SetJson ${depspkgsaur[@]} - aurversionpkgs=(${prevdepspkgsaur[@]}) + SetJson "${depspkgsaur[@]}" + aurversionpkgs=("${prevdepspkgsaur[@]}") fi # versioning check - if [[ -n "${aurversionpkgs[@]}" ]]; then + if [[ -n "${aurversionpkgs[*]}" ]]; then for i in "${!aurversionpkgs[@]}"; do unset aurversionpkgsname aurversionpkgsver aurversionpkgsaurver aurversionpkgsname=${aurversionpkgs[$i]} && aurversionpkgsname=${aurversionpkgsname%[><]*} && aurversionpkgsname=${aurversionpkgsname%=*} @@ -362,8 +358,8 @@ FindDepsAur() { aurversionpkgsaurver=$(GetJson "$json" "Version" "$aurversionpkgsname") # not found in AUR nor repo - if [[ ! $aurversionpkgsaurver ]]; then - [[ ! " ${errdeps[@]} " =~ " ${aurversionpkgs[$i]} " ]] && errdeps+=(${aurversionpkgs[$i]}) + if [[ ! "$aurversionpkgsaurver" ]]; then + [[ ! " ${errdeps[*]} " =~ " ${aurversionpkgs[$i]} " ]] && errdeps+=("${aurversionpkgs[$i]}") continue fi @@ -377,7 +373,7 @@ FindDepsAur() { *"<"*) [[ $(vercmp "$aurversionpkgsaurver" "$aurversionpkgsver") -lt 0 ]] && continue;; *"="*) [[ $(vercmp "$aurversionpkgsaurver" "$aurversionpkgsver") -eq 0 ]] && continue;; esac - [[ ! " ${errdeps[@]} " =~ " ${aurversionpkgs[$i]} " ]] && errdeps+=(${aurversionpkgs[$i]}) + [[ ! " ${errdeps[*]} " =~ " ${aurversionpkgs[$i]} " ]] && errdeps+=("${aurversionpkgs[$i]}") ;; *) continue;; esac @@ -387,16 +383,16 @@ FindDepsAur() { depspkgs=($(GetJson "$json" "Depends")) # cached packages makedeps check - if [[ ! $PKGDEST || $rebuild ]]; then + if [[ ! "$PKGDEST" || "$rebuild" ]]; then depspkgs+=($(GetJson "$json" "MakeDepends")) [[ "$checkdeps" == true ]] && depspkgs+=($(GetJson "$json" "CheckDepends")) else - [[ -z "${depspkgsaur[@]}" ]] && depspkgsaurtmp=(${aurpkgs[@]}) || depspkgsaurtmp=(${depspkgsaur[@]}) + [[ -z "${depspkgsaur[*]}" ]] && depspkgsaurtmp=("${aurpkgs[@]}") || depspkgsaurtmp=("${depspkgsaur[@]}") for i in "${!depspkgsaurtmp[@]}"; do depsAname=$(GetJson "$json" "Name" "${depspkgsaurtmp[$i]}") depsAver=$(GetJson "$json" "Version" "${depspkgsaurtmp[$i]}") GetBuiltPkg "$depsAname-$depsAver" "$PKGDEST" - if [[ ! $builtpkg ]]; then + if [[ ! "$builtpkg" ]]; then depspkgs+=($(GetJson "$json" "MakeDepends" "${depspkgsaurtmp[$i]}")) [[ "$checkdeps" == true ]] && depspkgs+=($(GetJson "$json" "CheckDepends")) fi @@ -405,103 +401,102 @@ FindDepsAur() { fi # remove deps provided by targets - if [[ -n "${aurpkgsproviders[@]}" ]]; then + if [[ -n "${aurpkgsproviders[*]}" ]]; then depspkgs=($(grep -xvf <(printf '%s\n' "${aurpkgsproviders[@]}") <(printf '%s\n' "${depspkgs[@]}"))) fi # workaround for limited RPC support of architecture dependent fields - if [[ ${CARCH} == 'i686' ]]; then - depspkgstmp=(${depspkgs[@]}) + if [[ "${CARCH}" == 'i686' ]]; then + depspkgstmp=("${depspkgs[@]}") for i in "${!depspkgstmp[@]}"; do - [[ -n "$(grep -E "^lib32\-" <<< ${depspkgstmp[$i]})" ]] && depspkgs=($(tr ' ' '\n' <<< ${depspkgs[@]} | sed "s/^${depspkgstmp[$i]}$//g")) - [[ -n "$(grep -E "^gcc-multilib$" <<< ${depspkgstmp[$i]})" ]] && depspkgs=($(tr ' ' '\n' <<< ${depspkgs[@]} | sed "s/^${depspkgstmp[$i]}$//g")) + grep -qE -e "^lib32\-" -e "^gcc-multilib$" <<< "${depspkgstmp[$i]}" && depspkgs=($(tr ' ' '\n' <<< "${depspkgs[@]}" | sed "s/^${depspkgstmp[$i]}$//g")) done fi # remove installed deps - if [[ ! $devel ]]; then - depspkgs=($($pacmanbin -T ${depspkgs[@]} | sort -u)) + if [[ ! "$devel" ]]; then + depspkgs=($("$pacmanbin" -T "${depspkgs[@]}" | sort -u)) else # remove versioning and check providers unset vcsdepspkgs for i in "${!depspkgs[@]}"; do - depspkgs[$i]=$(awk -F ">|<|=" '{print $1}' <<< ${depspkgs[$i]}) + depspkgs[$i]=$(awk -F ">|<|=" '{print $1}' <<< "${depspkgs[$i]}") unset j && j=$(expac -Qs '%n %P' "^${depspkgs[$i]}$" | head -1 | grep -E "([^a-zA-Z0-9_@\.\+-]${depspkgs[$i]}|^${depspkgs[$i]})" | grep -E "(${depspkgs[$i]}[^a-zA-Z0-9\.\+-]|${depspkgs[$i]}$)" | awk '{print $1}') if [[ -n "$j" ]]; then depspkgs[$i]="$j" - [[ $devel ]] && [[ ! " ${ignoredpkgs[@]} " =~ " $j " ]] && [[ -n "$(grep -E "\-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$" <<< $j)" ]] && vcsdepspkgs+=($j) + [[ "$devel" ]] && [[ ! " ${ignoredpkgs[*]} " =~ " $j " ]] && grep -qE "\-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$" <<< "$j" && vcsdepspkgs+=("$j") else - foreignpkgs+=(${depspkgs[$i]}) + foreignpkgs+=("${depspkgs[$i]}") fi done # reorder devel - if [[ $devel ]]; then - depspkgs=($($pacmanbin -T ${depspkgs[@]} | sort -u)) + if [[ "$devel" ]]; then + depspkgs=($("$pacmanbin" -T "${depspkgs[@]}" | sort -u)) depspkgstmp=($(grep -xvf <(printf '%s\n' "${depspkgs[@]}") <(printf '%s\n' "${vcsdepspkgs[@]}"))) depspkgstmp+=($(grep -xvf <(printf '%s\n' "${vcsdepspkgs[@]}") <(printf '%s\n' "${depspkgs[@]}"))) - depspkgs=($(tr ' ' '\n' <<< ${depspkgstmp[@]} | sort -u)) + depspkgs=($(tr ' ' '\n' <<< "${depspkgstmp[@]}" | sort -u)) fi fi # split binary and AUR depends pkgs unset depspkgsaur - if [[ -n "${depspkgs[@]}" ]]; then + if [[ -n "${depspkgs[*]}" ]]; then # remove all pkgs versioning - if [[ $nodeps && $dcount -eq 1 ]]; then + if [[ "$nodeps" && "$dcount" -eq 1 ]]; then for i in "${!depspkgs[@]}"; do - depspkgs[$i]=$(awk -F ">|<|=" '{print $1}' <<< ${depspkgs[$i]}) + depspkgs[$i]=$(awk -F ">|<|=" '{print $1}' <<< "${depspkgs[$i]}") done # assume installed deps - elif [[ -n "${assumeinstalled[@]}" ]]; then + elif [[ -n "${assumeinstalled[*]}" ]]; then # remove versioning for i in "${!assumeinstalled[@]}"; do unset assumedepspkgs - assumeinstalled[$i]=$(awk -F ">|<|=" '{print $1}' <<< ${assumeinstalled[$i]}) + assumeinstalled[$i]=$(awk -F ">|<|=" '{print $1}' <<< "${assumeinstalled[$i]}") for j in "${!depspkgs[@]}"; do - assumedepspkgs[$j]=$(awk -F ">|<|=" '{print $1}' <<< ${depspkgs[$j]}) - [[ " ${assumedepspkgs[@]} " =~ " ${assumeinstalled[$i]} " ]] && depspkgs[$j]=${assumeinstalled[$i]}; + assumedepspkgs[$j]=$(awk -F ">|<|=" '{print $1}' <<< "${depspkgs[$j]}") + [[ " ${assumedepspkgs[*]} " =~ " ${assumeinstalled[$i]} " ]] && depspkgs[$j]=${assumeinstalled[$i]}; done done depspkgs=($(grep -xvf <(printf '%s\n' "${assumeinstalled[@]}") <(printf '%s\n' "${depspkgs[@]}"))) fi - if [[ -n "${depspkgs[@]}" ]]; then - depspkgsaur=($(LC_ALL=C $pacmanbin -Sp ${depspkgs[@]} 2>&1 >/dev/null | awk '{print $NF}')) + if [[ -n "${depspkgs[*]}" ]]; then + depspkgsaur=($(LC_ALL=C "$pacmanbin" -Sp "${depspkgs[@]}" 2>&1 >/dev/null | awk '{print $NF}')) repodeps+=($(grep -xvf <(printf '%s\n' "${depspkgsaur[@]}") <(printf '%s\n' "${depspkgs[@]}"))) fi fi unset depspkgs # remove duplicate - if [[ -n "${depspkgsaur[@]}" ]]; then + if [[ -n "${depspkgsaur[*]}" ]]; then depspkgsaur=($(grep -xvf <(printf '%s\n' "${aurdepspkgs[@]}") <(printf '%s\n' "${depspkgsaur[@]}"))) fi # dependency cycle check - [[ -n "${prevdepspkgsaur[@]}" ]] && [[ "${prevdepspkgsaur[*]}" == "${depspkgsaur[*]}" ]] && Note "e" $"dependency cycle detected (${depspkgsaur[*]})" + [[ -n "${prevdepspkgsaur[*]}" ]] && [[ "${prevdepspkgsaur[*]}" = "${depspkgsaur[*]}" ]] && Note "e" $"dependency cycle detected (${depspkgsaur[*]})" - if [[ -n "${depspkgsaur[@]}" ]]; then + if [[ -n "${depspkgsaur[*]}" ]]; then # store for AUR version check - [[ ! $nodeps ]] && prevdepspkgsaur=(${depspkgsaur[@]}) + [[ ! "$nodeps" ]] && prevdepspkgsaur=("${depspkgsaur[@]}") # remove AUR pkgs versioning for i in "${!depspkgsaur[@]}"; do - depspkgsaur[$i]=$(awk -F ">|<|=" '{print $1}' <<< ${depspkgsaur[$i]}) + depspkgsaur[$i]=$(awk -F ">|<|=" '{print $1}' <<< "${depspkgsaur[$i]}") done # remove duplicate - depspkgsaur=($(tr ' ' '\n' <<< ${depspkgsaur[@]} | sort -u)) + depspkgsaur=($(tr ' ' '\n' <<< "${depspkgsaur[@]}" | sort -u)) fi - if [[ -n "${depspkgsaur[@]}" ]]; then - aurdepspkgs+=(${depspkgsaur[@]}) - FindDepsAur ${depspkgsaur[@]} + if [[ -n "${depspkgsaur[*]}" ]]; then + aurdepspkgs+=("${depspkgsaur[@]}") + FindDepsAur "${depspkgsaur[@]}" fi } SortDepsAur() { local i j sortaurpkgs sortdepspkgs sortdepspkgsaur # global checkedsortdepspkgsaur allcheckedsortdepspkgsaur json errdepsnover - [[ -z "${checkedsortdepspkgsaur[@]}" ]] && sortaurpkgs=(${aurpkgs[@]}) || sortaurpkgs=(${checkedsortdepspkgsaur[@]}) + [[ -z "${checkedsortdepspkgsaur[*]}" ]] && sortaurpkgs=("${aurpkgs[@]}") || sortaurpkgs=("${checkedsortdepspkgsaur[@]}") unset checkedsortdepspkgsaur for i in "${!sortaurpkgs[@]}"; do @@ -513,19 +508,19 @@ SortDepsAur() { # remove versioning for j in "${!errdeps[@]}"; do - errdepsnover[$j]=$(awk -F ">|<|=" '{print $1}' <<< ${errdeps[$j]}) + errdepsnover[$j]=$(awk -F ">|<|=" '{print $1}' <<< "${errdeps[$j]}") done # check AUR deps only for j in "${!sortdepspkgs[@]}"; do - sortdepspkgs[$j]=$(awk -F ">|<|=" '{print $1}' <<< ${sortdepspkgs[$j]}) + sortdepspkgs[$j]=$(awk -F ">|<|=" '{print $1}' <<< "${sortdepspkgs[$j]}") sortdepspkgsaur+=($(GetJson "$json" "Name" "${sortdepspkgs[$j]}")) # add erroneous AUR deps - [[ " ${errdepsnover[@]} " =~ " ${sortdepspkgs[$j]} " ]] && sortdepspkgsaur+=("${sortdepspkgs[$j]}") + [[ " ${errdepsnover[*]} " =~ " ${sortdepspkgs[$j]} " ]] && sortdepspkgsaur+=("${sortdepspkgs[$j]}") done # prepare tsort list - if [[ -z "${sortdepspkgsaur[@]}" ]]; then + if [[ -z "${sortdepspkgsaur[*]}" ]]; then tsortdeps+=("${sortaurpkgs[$i]} ${sortaurpkgs[$i]}") else for j in "${!sortdepspkgsaur[@]}"; do @@ -535,15 +530,15 @@ SortDepsAur() { # filter non checked deps sortdepspkgsaur=($(grep -xvf <(printf '%s\n' "${allcheckedsortdepspkgsaur[@]}") <(printf '%s\n' "${sortdepspkgsaur[@]}"))) - if [[ -n "${sortdepspkgsaur[@]}" ]]; then - checkedsortdepspkgsaur+=(${sortdepspkgsaur[@]}) - allcheckedsortdepspkgsaur+=(${sortdepspkgsaur[@]}) - allcheckedsortdepspkgsaur=($(tr ' ' '\n' <<< ${allcheckedsortdepspkgsaur[@]} | sort -u)) + if [[ -n "${sortdepspkgsaur[*]}" ]]; then + checkedsortdepspkgsaur+=("${sortdepspkgsaur[@]}") + allcheckedsortdepspkgsaur+=("${sortdepspkgsaur[@]}") + allcheckedsortdepspkgsaur=($(tr ' ' '\n' <<< "${allcheckedsortdepspkgsaur[@]}" | sort -u)) fi done - if [[ -n "${checkedsortdepspkgsaur[@]}" ]]; then - checkedsortdepspkgsaur=($(tr ' ' '\n' <<< ${checkedsortdepspkgsaur[@]} | sort -u)) - SortDepsAur ${checkedsortdepspkgsaur[@]} + if [[ -n "${checkedsortdepspkgsaur[*]}" ]]; then + checkedsortdepspkgsaur=($(tr ' ' '\n' <<< "${checkedsortdepspkgsaur[@]}" | sort -u)) + SortDepsAur "${checkedsortdepspkgsaur[@]}" fi } @@ -552,27 +547,27 @@ FindDepsAurError() { # global errdepsnover errdepslist tsorterrdeps currenterrdep for i in "${tsorterrdeps[@]}"; do - [[ ! " ${errdepsnover[@]} " =~ " $i " ]] && [[ ! " ${errdepslist[@]} " =~ " $i " ]] && nexterrdep="$i" && break + [[ ! " ${errdepsnover[*]} " =~ " $i " ]] && [[ ! " ${errdepslist[*]} " =~ " $i " ]] && nexterrdep="$i" && break done - [[ -z "${currenterrdep[@]}" ]] && currenterrdep=${tsorterrdeps[0]} + [[ -z "${currenterrdep[*]}" ]] && currenterrdep=${tsorterrdeps[0]} - if [[ ! " ${aurpkgs[@]} " =~ " $nexterrdep " ]]; then + if [[ ! " ${aurpkgs[*]} " =~ " $nexterrdep " ]]; then nextallerrdeps=($(GetJson "$json" "Depends" "$nexterrdep")) nextallerrdeps+=($(GetJson "$json" "MakeDepends" "$nexterrdep")) [[ "$checkdeps" == true ]] && depspkgs+=($(GetJson "$json" "CheckDepends")) # remove versioning for i in "${!nextallerrdeps[@]}"; do - nextallerrdeps[$i]=$(awk -F ">|<|=" '{print $1}' <<< ${nextallerrdeps[$i]}) + nextallerrdeps[$i]=$(awk -F ">|<|=" '{print $1}' <<< "${nextallerrdeps[$i]}") done - if [[ " ${nextallerrdeps[@]} " =~ " $currenterrdep " ]]; then + if [[ " ${nextallerrdeps[*]} " =~ " $currenterrdep " ]]; then errdepslist+=("$nexterrdep") - currenterrdep=${tsorterrdeps[0]} + currenterrdep="${tsorterrdeps[0]}" fi - tsorterrdeps=(${tsorterrdeps[@]:1}) - FindDepsAurError ${tsorterrdeps[@]} + tsorterrdeps=("${tsorterrdeps[@]:1}") + FindDepsAurError "${tsorterrdeps[@]}" else for i in "${!aurpkgs[@]}"; do nextallerrdeps=($(GetJson "$json" "Depends" "${aurpkgs[$i]}")) @@ -581,10 +576,10 @@ FindDepsAurError() { # remove versioning for j in "${!nextallerrdeps[@]}"; do - nextallerrdeps[$j]=$(awk -F ">|<|=" '{print $1}' <<< ${nextallerrdeps[$j]}) + nextallerrdeps[$j]=$(awk -F ">|<|=" '{print $1}' <<< "${nextallerrdeps[$j]}") done - if [[ " ${nextallerrdeps[@]} " =~ " $currenterrdep " ]]; then + if [[ " ${nextallerrdeps[*]} " =~ " $currenterrdep " ]]; then errdepslist+=("${aurpkgs[$i]}") fi done @@ -594,85 +589,84 @@ FindDepsAurError() { FindDepsRepo() { local allrepodepspkgs repodepspkgstmp # global repodeps repodepspkgs - [[ -z "${repodeps[@]}" ]] && return + [[ -z "${repodeps[*]}" ]] && return # reduce root binary deps - repodeps=($(tr ' ' '\n' <<< ${repodeps[@]} | sort -u)) + repodeps=($(tr ' ' '\n' <<< "${repodeps[@]}" | sort -u)) # add initial repodeps - [[ -z "${repodepspkgs[@]}" ]] && repodepspkgs=(${repodeps[@]}) + [[ -z "${repodepspkgs[*]}" ]] && repodepspkgs=("${repodeps[@]}") # get non installed repo deps unset allrepodepspkgs repodepspkgstmp - [[ -n "${repodeps[@]}" ]] && allrepodepspkgs=($(expac -S -1 '%E' ${repodeps[@]})) # no version check needed as all deps are binary - [[ -n "${allrepodepspkgs[@]}" ]] && repodepspkgstmp=($($pacmanbin -T ${allrepodepspkgs[@]} | sort -u)) + [[ -n "${repodeps[*]}" ]] && allrepodepspkgs=($(expac -S -1 '%E' "${repodeps[@]}")) # no version check needed as all deps are binary + [[ -n "${allrepodepspkgs[*]}" ]] && repodepspkgstmp=($("$pacmanbin" -T "${allrepodepspkgs[@]}" | sort -u)) # remove duplicate - if [[ -n "${repodepspkgstmp[@]}" ]]; then + if [[ -n "${repodepspkgstmp[*]}" ]]; then repodepspkgstmp=($(grep -xvf <(printf '%s\n' "${repodepspkgs[@]}") <(printf '%s\n' "${repodepspkgstmp[@]}"))) fi - if [[ -n "${repodepspkgstmp[@]}" ]]; then - repodepspkgs+=(${repodepspkgstmp[@]}) + if [[ -n "${repodepspkgstmp[*]}" ]]; then + repodepspkgs+=("${repodepspkgstmp[@]}") - repodeps=(${repodepspkgstmp[@]}) - FindDepsRepo ${repodeps[@]} + repodeps=("${repodepspkgstmp[@]}") + FindDepsRepo "${repodeps[@]}" fi } FindDepsRepoProvider() { local allrepodepspkgs providerrepodepspkgstmp # global repodeps repodepspkgs - [[ -z "${providerspkgs[@]}" ]] && return + [[ -z "${providerspkgs[*]}" ]] && return # reduce root binary deps - providerspkgs=($(tr ' ' '\n' <<< ${providerspkgs[@]} | sort -u)) + providerspkgs=($(tr ' ' '\n' <<< "${providerspkgs[@]}" | sort -u)) # get non installed repo deps unset allproviderrepodepspkgs providerrepodepspkgstmp - [[ -n "${providerspkgs[@]}" ]] && allproviderrepodepspkgs=($(expac -S -1 '%E' ${providerspkgs[@]})) # no version check needed as all deps are binary - [[ -n "${allproviderrepodepspkgs[@]}" ]] && providerrepodepspkgstmp=($($pacmanbin -T ${allproviderrepodepspkgs[@]} | sort -u)) + [[ -n "${providerspkgs[*]}" ]] && allproviderrepodepspkgs=($(expac -S -1 '%E' "${providerspkgs[@]}")) # no version check needed as all deps are binary + [[ -n "${allproviderrepodepspkgs[*]}" ]] && providerrepodepspkgstmp=($("$pacmanbin" -T "${allproviderrepodepspkgs[@]}" | sort -u)) # remove duplicate - if [[ -n "${providerrepodepspkgstmp[@]}" ]]; then + if [[ -n "${providerrepodepspkgstmp[*]}" ]]; then providerrepodepspkgstmp=($(grep -xvf <(printf '%s\n' "${repodepspkgs[@]}") <(printf '%s\n' "${providerrepodepspkgstmp[@]}"))) fi - if [[ -n "${providerrepodepspkgstmp[@]}" ]]; then - repodepspkgs+=(${providerrepodepspkgstmp[@]}) - - providerspkgs=(${providerrepodepspkgstmp[@]}) - FindDepsRepoProvider ${providerspkgs[@]} + if [[ -n "${providerrepodepspkgstmp[*]}" ]]; then + repodepspkgs+=("${providerrepodepspkgstmp[@]}") + providerspkgs=("${providerrepodepspkgstmp[@]}") + FindDepsRepoProvider "${providerspkgs[@]}" fi } IgnoreDepsChecks() { local i # global ignoredpkgs aurpkgs aurdepspkgs aurdepspkgsAgrp aurdepspkgsQgrp repodepspkgsSgrp repodepspkgsQgrp rmaurpkgs deps repodepspkgs - [[ -z "${ignoredpkgs[@]}" && -z "${ignoredgrps[@]}" ]] && return + [[ -z "${ignoredpkgs[*]}" && -z "${ignoredgrps[*]}" ]] && return # add checked targets and preserve tsorted order - deps=(${deps[@]:0:${#aurpkgs[@]}}) + deps=("${deps[@]:0:${#aurpkgs[@]}}") # check dependencies for i in "${repodepspkgs[@]}"; do unset isignored - if [[ " ${ignoredpkgs[@]} " =~ " $i " ]]; then + if [[ " ${ignoredpkgs[*]} " =~ " $i " ]]; then isignored=true - elif [[ -n "${ignoredgrps[@]}" ]]; then + elif [[ -n "${ignoredgrps[*]}" ]]; then unset repodepspkgsSgrp repodepspkgsQgrp repodepspkgsSgrp=($(expac -S -1 '%G' "$i")) for j in "${repodepspkgsSgrp[@]}"; do - [[ " ${ignoredgrps[@]} " =~ " $j " ]] && isignored=true + [[ " ${ignoredgrps[*]} " =~ " $j " ]] && isignored=true done repodepspkgsQgrp=($(expac -Q '%G' "$i")) for j in "${repodepspkgsQgrp[@]}"; do - [[ " ${ignoredgrps[@]} " =~ " $j " ]] && isignored=true + [[ " ${ignoredgrps[*]} " =~ " $j " ]] && isignored=true done fi - if [[ $isignored = true ]]; then - if [[ ! $upgrade ]]; then + if [[ "$isignored" = true ]]; then + if [[ ! "$upgrade" ]]; then Note "w" $"skipping target: ${colorW}$i${reset}" else Note "w" $"${colorW}$i${reset}: ignoring package upgrade" @@ -682,32 +676,32 @@ IgnoreDepsChecks() { done for i in "${aurdepspkgs[@]}"; do # skip already checked dependencies - [[ " ${aurpkgs[@]} " =~ " $i " ]] && continue - [[ " ${rmaurpkgs[@]} " =~ " $i " ]] && Note "e" $"Unresolved dependency '${colorW}$i${reset}'" + [[ " ${aurpkgs[*]} " =~ " $i " ]] && continue + [[ " ${rmaurpkgs[*]} " =~ " $i " ]] && Note "e" $"Unresolved dependency '${colorW}$i${reset}'" unset isignored - if [[ " ${ignoredpkgs[@]} " =~ " $i " ]]; then + if [[ " ${ignoredpkgs[*]} " =~ " $i " ]]; then isignored=true - elif [[ -n "${ignoredgrps[@]}" ]]; then + elif [[ -n "${ignoredgrps[*]}" ]]; then unset aurdepspkgsAgrp aurdepspkgsQgrp aurdepspkgsAgrp=($(GetJson "$json" "Groups" "$i")) for j in "${aurdepspkgsAgrp[@]}"; do - [[ " ${ignoredgrps[@]} " =~ " $j " ]] && isignored=true + [[ " ${ignoredgrps[*]} " =~ " $j " ]] && isignored=true done aurdepspkgsQgrp=($(expac -Q '%G' "$i")) for j in "${aurdepspkgsQgrp[@]}"; do - [[ " ${ignoredgrps[@]} " =~ " $j " ]] && isignored=true + [[ " ${ignoredgrps[*]} " =~ " $j " ]] && isignored=true done fi - if [[ $isignored = true ]]; then - if [[ ! $noconfirm ]]; then + if [[ "$isignored" = true ]]; then + if [[ ! "$noconfirm" ]]; then if ! Proceed "y" $"$i dependency is in IgnorePkg/IgnoreGroup. Install anyway?"; then Note "w" $"skipping target: ${colorW}$i${reset}" Note "e" $"Unresolved dependency '${colorW}$i${reset}'" fi else - if [[ ! $upgrade ]]; then + if [[ ! "$upgrade" ]]; then Note "w" $"skipping target: ${colorW}$i${reset}" else Note "w" $"${colorW}$i${reset}: ignoring package upgrade" @@ -715,29 +709,29 @@ IgnoreDepsChecks() { Note "e" $"Unresolved dependency '${colorW}$i${reset}'" fi fi - deps+=($i) + deps+=("$i") done } ProviderChecks() { - local allproviders providersdeps providersdepsnover providers repodepspkgsprovided providerspkgs provided nb providersnb + local providersdeps providersdepsnover providers repodepspkgsprovided providerspkgs provided nb providersnb # global repodepspkgs repoprovidersconflictingpkgs repodepsSver repodepsSrepo repodepsQver - [[ -z "${repodepspkgs[@]}" ]] && return + [[ -z "${repodepspkgs[*]}" ]] && return # filter directly provided deps - noprovidersdeps=($(expac -S -1 '%n' ${repodepspkgs[@]})) + noprovidersdeps=($(expac -S -1 '%n' "${repodepspkgs[@]}")) providersdeps=($(grep -xvf <(printf '%s\n' "${noprovidersdeps[@]}") <(printf '%s\n' "${repodepspkgs[@]}"))) # remove installed providers - providersdeps=($($pacmanbin -T ${providersdeps[@]} | sort -u)) + providersdeps=($("$pacmanbin" -T "${providersdeps[@]}" | sort -u)) for i in "${!providersdeps[@]}"; do # check versioning unset providersdepsname providersdepsver providersdepsSname providersdepsSver - providersdepsname=${providersdeps[$i]} && providersdepsname=${providersdepsname%[><]*} && providersdepsname=${providersdepsname%=*} - providersdepsver=${providersdeps[$i]} && providersdepsver=${providersdepsver#*=} && providersdepsver=${providersdepsver#*[><]} - providersdepsSname=($(expac -Ss '%n' ^${providersdepsname[$i]}$)) - providersdepsSver=($(expac -Ss '%v' ^${providersdepsname[$i]}$)) + providersdepsname="${providersdeps[$i]}" && providersdepsname="${providersdepsname%[><]*}" && providersdepsname="${providersdepsname%=*}" + providersdepsver="${providersdeps[$i]}" && providersdepsver="${providersdepsver#*=}" && providersdepsver="${providersdepsver#*[><]}" + providersdepsSname=($(expac -Ss '%n' "^${providersdepsname[$i]}$")) + providersdepsSver=($(expac -Ss '%v' "^${providersdepsname[$i]}$")) case "${providersdeps[$i]}" in *">"*|*"<"*|*"="*) @@ -756,50 +750,49 @@ ProviderChecks() { esac # remove versioning - providersdeps[$i]=$(awk -F ">|<|=" '{print $1}' <<< ${providersdeps[$i]}) + providersdeps[$i]="$(awk -F ">|<|=" '{print $1}' <<< "${providersdeps[$i]}")" # list providers providers=($(expac -Ss '%n' "^${providersdeps[$i]}$" | sort -u)) # filter out non matching versioned providers - [[ -n "${providersdepsnover[@]}" ]] && providers=($(grep -xf <(printf '%s\n' "${providersdepsnover[@]}") <(printf '%s\n' "${providers[@]}"))) + [[ -n "${providersdepsnover[*]}" ]] && providers=($(grep -xf <(printf '%s\n' "${providersdepsnover[@]}") <(printf '%s\n' "${providers[@]}"))) # skip if provided in dependency chain unset repodepspkgsprovided for j in "${!providers[@]}"; do - [[ " ${repodepspkgs[@]} " =~ " ${providers[$j]} " ]] && repodepspkgsprovided='true' + [[ " ${repodepspkgs[*]} " =~ " ${providers[$j]} " ]] && repodepspkgsprovided='true' done - [[ $repodepspkgsprovided ]] && continue + [[ "$repodepspkgsprovided" ]] && continue # skip if already provided - if [[ -n "${providerspkgs[@]}" ]]; then - providerspkgs=($(tr ' ' '|' <<< ${providerspkgs[@]})) + if [[ -n "${providerspkgs[*]}" ]]; then + providerspkgs=($(tr ' ' '|' <<< "${providerspkgs[@]}")) provided+=($(expac -Ss '%S' "^(${providerspkgs[*]})$")) - [[ " ${provided[@]} " =~ " ${providersdeps[$i]} " ]] && continue + [[ " ${provided[*]} " =~ " ${providersdeps[$i]} " ]] && continue fi - if [[ ! $noconfirm && ${#providers[@]} -gt 1 ]]; then + if [[ ! "$noconfirm" && "${#providers[*]}" -gt 1 ]]; then Note "i" $"${colorW}There are ${#providers[@]} providers available for ${providersdeps[$i]}:${reset}" expac -S -1 ' %!) %n (%r) ' "${providers[@]}" local nb=-1 - providersnb=$(( ${#providers[@]} -1 )) # count from 0 - while [[ $nb -lt 0 || $nb -ge ${#providers} ]]; do - + providersnb=$(( "${#providers[@]}" -1 )) # count from 0 + while [[ "$nb" -lt 0 || "$nb" -ge "${#providers}" ]]; do printf "\n%s " $"Enter a number (default=0):" case "$TERM" in dumb) read -r nb ;; *) - read -r -n "$(echo -n $providersnb | wc -m)" nb + read -r -n "$(echo -n "$providersnb" | wc -m)" nb echo ;; esac - case $nb in + case "$nb" in [0-9]|[0-9][0-9]) - if [[ $nb -lt 0 || $nb -ge ${#providers[@]} ]]; then + if [[ "$nb" -lt 0 || "$nb" -ge "${#providers[@]}" ]]; then echo && Note "f" $"invalid value: $nb is not between 0 and $providersnb" && ((i--)) else break @@ -811,19 +804,19 @@ ProviderChecks() { else local nb=0 fi - providerspkgs+=(${providers[$nb]}) + providerspkgs+=("${providers[$nb]}") done # add selected providers to repo deps - repodepspkgs+=(${providerspkgs[@]}) + repodepspkgs+=("${providerspkgs[@]}") # store for installation - repoprovidersconflictingpkgs+=(${providerspkgs[@]}) + repoprovidersconflictingpkgs+=("${providerspkgs[@]}") - FindDepsRepoProvider ${providerspkgs[@]} + FindDepsRepoProvider "${providerspkgs[@]}" # get binary packages info - if [[ -n "${repodepspkgs[@]}" ]]; then + if [[ -n "${repodepspkgs[*]}" ]]; then repodepspkgs=($(expac -S -1 '%n' "${repodepspkgs[@]}" | sort -u)) repodepsSver=($(expac -S -1 '%v' "${repodepspkgs[@]}")) repodepsQver=($(expac -Q '%v' "${repodepspkgs[@]}")) @@ -842,52 +835,52 @@ ConflictChecks() { allQconflicts=($(expac -Q '%C')) # AUR conflicts - Aprovides=(${depsAname[@]}) + Aprovides=("${depsAname[@]}") Aprovides+=($(GetJson "$json" "Provides")) Aconflicts=($(GetJson "$json" "Conflicts")) # remove AUR versioning for i in "${!Aprovides[@]}"; do - Aprovides[$i]=$(awk -F ">|<|=" '{print $1}' <<< ${Aprovides[$i]}) + Aprovides[$i]=$(awk -F ">|<|=" '{print $1}' <<< "${Aprovides[$i]}") done for i in "${!Aconflicts[@]}"; do - Aconflicts[$i]=$(awk -F ">|<|=" '{print $1}' <<< ${Aconflicts[$i]}) + Aconflicts[$i]=$(awk -F ">|<|=" '{print $1}' <<< "${Aconflicts[$i]}") done aurconflicts=($(grep -xf <(printf '%s\n' "${Aprovides[@]}") <(printf '%s\n' "${allQconflicts[@]}"))) aurconflicts+=($(grep -xf <(printf '%s\n' "${Aconflicts[@]}") <(printf '%s\n' "${allQprovides[@]}"))) - aurconflicts=($(tr ' ' '\n' <<< ${aurconflicts[@]} | sort -u)) + aurconflicts=($(tr ' ' '\n' <<< "${aurconflicts[@]}" | sort -u)) for i in "${aurconflicts[@]}"; do unset aurAconflicts - [[ " ${depsAname[@]} " =~ " $i " ]] && aurAconflicts=($i) + [[ " ${depsAname[*]} " =~ " $i " ]] && aurAconflicts=("$i") for j in "${depsAname[@]}"; do [[ " $(GetJson "$json" "Conflicts" "$j") " =~ " $i " ]] && aurAconflicts+=($j) done for j in "${aurAconflicts[@]}"; do unset k Aprovides - k=$(expac -Qs '%n %P' "^$i$" | head -1 | grep -E "([^a-zA-Z0-9_@\.\+-]$i|^$i)" | grep -E "($i[^a-zA-Z0-9\.\+-]|$i$)" | awk '{print $1}') - [[ ! $installpkg && ! " ${aurdepspkgs[@]} " =~ " $j " ]] && continue # skip if downloading target only - [[ "$j" == "$k" || -z "$k" ]] && continue # skip if reinstalling or if no conflict exists + k=$(expac -Qs '%n %P' "^$i$" | head -1 | grep -E "([^a-zA-Z0-9_@\.\+-]$i|^$i)" | grep -E "(${i}[^a-zA-Z0-9\.\+-]|$i$)" | awk '{print $1}') + [[ ! "$installpkg" && ! " ${aurdepspkgs[*]} " =~ " $j " ]] && continue # skip if downloading only + [[ "$j" = "$k" || -z "$k" ]] && continue # skip if reinstalling or if no conflict exists - Aprovides=($j) - if [[ ! $noconfirm && ! " ${aurconflictingpkgs[@]} " =~ " $k " ]]; then + Aprovides=("$j") + if [[ ! "$noconfirm" && ! " ${aurconflictingpkgs[*]} " =~ " $k " ]]; then if ! Proceed "n" $"$j and $k are in conflict ($i). Remove $k?"; then aurconflictingpkgs+=($j $k) - aurconflictingpkgsrm+=($k) + aurconflictingpkgsrm+=("$k") for l in "${!depsAname[@]}"; do [[ " ${depsAname[$l]} " =~ "$k" ]] && depsQver[$l]=$(expac -Qs '%v' "^$k$" | head -1) done Aprovides+=($(GetJson "$json" "Provides" "$j")) # remove AUR versioning for l in "${!Aprovides[@]}"; do - Aprovides[$l]=$(awk -F ">|<|=" '{print $1}' <<< ${Aprovides[$l]}) + Aprovides[$l]=$(awk -F ">|<|=" '{print $1}' <<< "${Aprovides[$l]}") done - [[ ! " ${Aprovides[@]} " =~ " $k " && ! " ${aurconflictingpkgsrm[@]} " =~ " $k " ]] && CheckRequires $k + [[ ! " ${Aprovides[*]} " =~ " $k " && ! " ${aurconflictingpkgsrm[*]} " =~ " $k " ]] && CheckRequires "$k" break else Note "f" $"unresolvable package conflicts detected" Note "f" $"failed to prepare transaction (conflicting dependencies)" - if [[ $upgrade ]]; then + if [[ "$upgrade" ]]; then Qrequires=($(expac -Q '%N' "$i")) Note "e" $"$j and $k are in conflict (required by ${Qrequires[*]})" else @@ -898,17 +891,17 @@ ConflictChecks() { Aprovides+=($(GetJson "$json" "Provides" "$j")) # remove AUR versioning for l in "${!Aprovides[@]}"; do - Aprovides[$l]=$(awk -F ">|<|=" '{print $1}' <<< ${Aprovides[$l]}) + Aprovides[$l]=$(awk -F ">|<|=" '{print $1}' <<< "${Aprovides[$l]}") done - [[ ! " ${Aprovides[@]} " =~ " $k " && ! " ${aurconflictingpkgsrm[@]} " =~ " $k " ]] && CheckRequires $k + [[ ! " ${Aprovides[*]} " =~ " $k " && ! " ${aurconflictingpkgsrm[*]} " =~ " $k " ]] && CheckRequires "$k" done done - NothingToDo ${deps[@]} + NothingToDo "${deps[@]}" # repo conflicts - if [[ -n "${repodepspkgs[@]}" ]]; then - repodepsprovides=(${repodepspkgs[@]}) + if [[ -n "${repodepspkgs[*]}" ]]; then + repodepsprovides=("${repodepspkgs[@]}") repodepsprovides+=($(expac -S -1 '%S' "${repodepspkgs[@]}")) # no versioning repodepsconflicts=($(expac -S -1 '%H' "${repodepspkgs[@]}")) @@ -916,11 +909,11 @@ ConflictChecks() { unset checkedrepodepsconflicts for i in "${!repodepsconflicts[@]}"; do unset repodepsconflictsname repodepsconflictsver localver - repodepsconflictsname=${repodepsconflicts[$i]} && repodepsconflictsname=${repodepsconflictsname%[><]*} && repodepsconflictsname=${repodepsconflictsname%=*} - repodepsconflictsver=${repodepsconflicts[$i]} && repodepsconflictsver=${repodepsconflictsver#*=} && repodepsconflictsver=${repodepsconflictsver#*[><]} - [[ $repodepsconflictsname ]] && localver=$(expac -Q '%v' $repodepsconflictsname) + repodepsconflictsname="${repodepsconflicts[$i]}" && repodepsconflictsname="${repodepsconflictsname%[><]*}" && repodepsconflictsname="${repodepsconflictsname%=*}" + repodepsconflictsver="${repodepsconflicts[$i]}" && repodepsconflictsver="${repodepsconflictsver#*=}" && repodepsconflictsver="${repodepsconflictsver#*[><]}" + [[ "$repodepsconflictsname" ]] && localver=$(expac -Q '%v' "$repodepsconflictsname") - if [[ $localver ]]; then + if [[ "$localver" ]]; then case "${repodepsconflicts[$i]}" in *">="*) [[ $(vercmp "$repodepsconflictsver" "$localver") -ge 0 ]] && continue;; *"<="*) [[ $(vercmp "$repodepsconflictsver" "$localver") -le 0 ]] && continue;; @@ -934,28 +927,28 @@ ConflictChecks() { repoconflicts+=($(grep -xf <(printf '%s\n' "${repodepsprovides[@]}") <(printf '%s\n' "${allQconflicts[@]}"))) repoconflicts+=($(grep -xf <(printf '%s\n' "${checkedrepodepsconflicts[@]}") <(printf '%s\n' "${allQprovides[@]}"))) - repoconflicts=($(tr ' ' '\n' <<< ${repoconflicts[@]} | sort -u)) + repoconflicts=($(tr ' ' '\n' <<< "${repoconflicts[@]}" | sort -u)) fi for i in "${repoconflicts[@]}"; do unset Qprovides - repoSconflicts=($(expac -S -1 '%n %C %S' "${repodepspkgs[@]}" | grep -E "[^a-zA-Z0-9_@\.\+-]$i" | grep -E "($i[^a-zA-Z0-9\.\+-]|$i$)" | awk '{print $1}')) + repoSconflicts=($(expac -S -1 '%n %C %S' "${repodepspkgs[@]}" | grep -E "[^a-zA-Z0-9_@\.\+-]$i" | grep -E "(${i}[^a-zA-Z0-9\.\+-]|$i$)" | awk '{print $1}')) for j in "${repoSconflicts[@]}"; do - unset k && k=$(expac -Qs '%n %P' "^$i$" | head -1 | grep -E "([^a-zA-Z0-9_@\.\+-]$i|^$i)" | grep -E "($i[^a-zA-Z0-9\.\+-]|$i$)" | awk '{print $1}') - [[ "$j" == "$k" || -z "$k" ]] && continue # skip when no conflict with repopkgs + unset k && k=$(expac -Qs '%n %P' "^$i$" | head -1 | grep -E "([^a-zA-Z0-9_@\.\+-]$i|^$i)" | grep -E "(${i}[^a-zA-Z0-9\.\+-]|$i$)" | awk '{print $1}') + [[ "$j" = "$k" || -z "$k" ]] && continue # skip when no conflict with repopkgs - if [[ ! $noconfirm && ! " ${repoconflictingpkgs[@]} " =~ " $k " ]]; then + if [[ ! "$noconfirm" && ! " ${repoconflictingpkgs[*]} " =~ " $k " ]]; then if ! Proceed "n" $"$j and $k are in conflict ($i). Remove $k?"; then - repoconflictingpkgs+=($j $k) - repoconflictingpkgsrm+=($k) - repoprovidersconflictingpkgs+=($j) + repoconflictingpkgs+=("$j" "$k") + repoconflictingpkgsrm+=("$k") + repoprovidersconflictingpkgs+=("$j") Qprovides=($(expac -Ss '%S' "^$k$")) - [[ ! " ${Qprovides[@]} " =~ " $k " && ! " ${repoconflictingpkgsrm[@]} " =~ " $k " ]] && CheckRequires $k + [[ ! " ${Qprovides[*]} " =~ " $k " && ! " ${repoconflictingpkgsrm[*]} " =~ " $k " ]] && CheckRequires "$k" break else Note "f" $"unresolvable package conflicts detected" Note "f" $"failed to prepare transaction (conflicting dependencies)" - if [[ $upgrade ]]; then + if [[ "$upgrade" ]]; then Qrequires=($(expac -Q '%N' "$i")) Note "e" $"$j and $k are in conflict (required by ${Qrequires[*]})" else @@ -964,7 +957,7 @@ ConflictChecks() { fi fi Qprovides=($(expac -Ss '%S' "^$k$")) - [[ ! " ${Qprovides[@]} " =~ " $k " ]] && CheckRequires $k + [[ ! " ${Qprovides[*]} " =~ " $k " ]] && CheckRequires "$k" done done } @@ -974,24 +967,24 @@ ReinstallChecks() { # global aurpkgs aurdepspkgs deps aurconflictingpkgs depsAname depsQver depsAver depsAood depsAmain depsAtmp=(${depsAname[@]}) for i in "${!depsAtmp[@]}"; do - [[ ! " ${aurpkgs[@]} " =~ " ${depsAname[$i]} " || " ${aurconflictingpkgs[@]} " =~ " ${depsAname[$i]} " ]] && continue + [[ ! " ${aurpkgs[*]} " =~ " ${depsAname[$i]} " || " ${aurconflictingpkgs[*]} " =~ " ${depsAname[$i]} " ]] && continue [[ -z "${depsQver[$i]}" || "${depsQver[$i]}" = '#' || $(vercmp "${depsAver[$i]}" "${depsQver[$i]}") -gt 0 ]] && continue - [[ ! $installpkg && ! " ${aurdepspkgs[@]} " =~ " ${depsAname[$i]} " ]] && continue - if [[ -n "$(grep -E "\-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$" <<< ${depsAname[$i]})" ]]; then + [[ ! $installpkg && ! " ${aurdepspkgs[*]} " =~ " ${depsAname[$i]} " ]] && continue + if grep -qE "\-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$" <<< "${depsAname[$i]}"; then Note "w" $"${colorW}${depsAname[$i]}${reset} latest revision -- fetching" else if [[ ! $needed ]]; then Note "w" $"${colorW}${depsAname[$i]}-${depsQver[$i]}${reset} is up to date -- reinstalling" else Note "w" $"${colorW}${depsAname[$i]}-${depsQver[$i]}${reset} is up to date -- skipping" - deps=($(tr ' ' '\n' <<< ${deps[@]} | sed "s/^${depsAname[$i]}$//g")) - unset depsAname[$i] depsQver[$i] depsAver[$i] depsAood[$i] depsAmain[$i] + deps=($(tr ' ' '\n' <<< "${deps[@]}" | sed "s/^${depsAname[$i]}$//g")) + unset "depsAname[$i]" "depsQver[$i]" "depsAver[$i]" "depsAood[$i]" "depsAmain[$i]" fi fi done - [[ $needed ]] && depsAname=(${depsAname[@]}) && depsQver=(${depsQver[@]}) && depsAver=(${depsAver[@]}) && depsAood=(${depsAood[@]}) && depsAmain=(${depsAmain[@]}) + [[ "$needed" ]] && depsAname=(${depsAname[@]}) && depsQver=(${depsQver[@]}) && depsAver=(${depsAver[@]}) && depsAood=(${depsAood[@]}) && depsAmain=(${depsAmain[@]}) - NothingToDo ${deps[@]} + NothingToDo "${deps[@]}" } OutofdateChecks() { @@ -1011,20 +1004,20 @@ OrphanChecks() { } Prompt() { - local i binaryksize sumk summ builtpkg cachedpkgs strname stroldver strnewver strsize action + local i binaryksize sumk summ builtpkg cachedpkgs stroldver strnewver strsize action local depsver repodepspkgsver strrepodlsize strrepoinsize strsumk strsumm lreposizelabel lreposize # global repodepspkgs repodepsSver depsAname depsAver depsArepo depsAcached lname lver lsize deps depsQver repodepspkgs repodepsSrepo repodepsQver repodepsSver # compute binary size - if [[ -n "${repodepspkgs[@]}" ]]; then + if [[ -n "${repodepspkgs[*]}" ]]; then binaryksize=($(expac -S -1 '%k' "${repodepspkgs[@]}")) binarymsize=($(expac -S -1 '%m' "${repodepspkgs[@]}")) sumk=0 summ=0 for i in "${!repodepspkgs[@]}"; do GetBuiltPkg "${repodepspkgs[$i]}-${repodepsSver[$i]}" '/var/cache/pacman/pkg' - [[ $builtpkg ]] && binaryksize[$i]=0 - sumk=$((sumk + ${binaryksize[$i]})) - summ=$((summ + ${binarymsize[$i]})) + [[ "$builtpkg" ]] && binaryksize[$i]=0 + sumk=$((sumk + "${binaryksize[$i]}")) + summ=$((summ + "${binarymsize[$i]}")) done sumk=$(awk '{ printf("%.2f\n", $1/$2) }' <<< "$sumk 1048576") summ=$(awk '{ printf("%.2f\n", $1/$2) }' <<< "$summ 1048576") @@ -1032,17 +1025,17 @@ Prompt() { # cached packages check for i in "${!depsAname[@]}"; do - [[ ! $PKGDEST || $rebuild ]] && break + [[ ! "$PKGDEST" || "$rebuild" ]] && break GetBuiltPkg "${depsAname[$i]}-${depsAver[$i]}" "$PKGDEST" - [[ $builtpkg ]] && cachedpkgs+=(${depsAname[$i]}) && depsAcached[$i]=$"(cached)" || depsAcached[$i]="" + [[ "$builtpkg" ]] && cachedpkgs+=(${depsAname[$i]}) && depsAcached[$i]=$"(cached)" || depsAcached[$i]="" unset builtpkg done - if [[ -n $(pacman-conf VerbosePkgLists) ]]; then + 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") + depsArepo=("${depsAname[@]/#/aur/}") + lname="$(GetLength "${depsArepo[@]}" "${repodepsSrepo[@]}" "$straurname" "$strreponame")" + lver="$(GetLength "${depsQver[@]}" "${depsAver[@]}" "${repodepsQver[@]}" "${repodepsSver[@]}" "$stroldver" "$strnewver")" lsize=$(GetLength "$strsize") # local version column cleanup @@ -1055,7 +1048,7 @@ Prompt() { printf "%-${lname}s ${colorR}%-${lver}s${reset} ${colorG}%-${lver}s${reset} %${lsize}s\n" "${depsArepo[$i]}" "${depsQver[$i]}" "${depsAver[$i]}" "${depsAcached[$i]}"; done - if [[ -n "${repodepspkgs[@]}" ]]; then + if [[ -n "${repodepspkgs[*]}" ]]; then for i in "${!repodepspkgs[@]}"; do binarysize[$i]=$(awk '{ printf("%.2f\n", $1/$2) }' <<< "${binaryksize[$i]} 1048576") done @@ -1073,10 +1066,10 @@ Prompt() { repodepspkgsver="${repodepspkgsver}${repodepspkgs[$i]}-${repodepsSver[$i]} " done printf "\n${colorW}%-16s${reset} %s\n" $"AUR Packages (${#deps[@]})" "$depsver" - [[ -n "${repodepspkgs[@]}" ]] && printf "${colorW}%-16s${reset} %s\n" $"Repo Packages (${#repodepspkgs[@]})" "$repodepspkgsver" + [[ -n "${repodepspkgs[*]}" ]] && printf "${colorW}%-16s${reset} %s\n" $"Repo Packages (${#repodepspkgs[@]})" "$repodepspkgsver" fi - if [[ -n "${repodepspkgs[@]}" ]]; then + if [[ -n "${repodepspkgs[*]}" ]]; then strrepodlsize=$"Repo Download Size:"; strrepoinsize=$"Repo Installed Size:"; strsumk=$"$sumk MiB"; strsumm=$"$summ MiB" lreposizelabel=$(GetLength "$strrepodlsize" "$strrepoinsize") lreposize=$(GetLength "$strsumk" "$strsumm") @@ -1085,26 +1078,24 @@ Prompt() { fi echo - [[ $installpkg ]] && action=$"installation" || action=$"download" - if ! Proceed "y" $"Proceed with $action?"; then - exit - fi + [[ "$installpkg" ]] && action=$"installation" || action=$"download" + Proceed "y" $"Proceed with $action?" || exit } DownloadPkgs() { - local i errgit + local i # global basepkgs Note "i" $"${colorW}Retrieving package(s)...${reset}" - GetPkgbase $@ + GetPkgbase "$@" # no results check - if [[ -z "${basepkgs[@]}" ]]; then + if [[ -z "${basepkgs[*]}" ]]; then Note "e" $"no results found" return fi # reset - for i in ${basepkgs[@]}; do + for i in "${basepkgs[@]}"; do cd "$clonedir" || exit 1 if [[ -d "$i" ]]; then cd "$clonedir/$i" || exit 1 @@ -1120,18 +1111,17 @@ DownloadPkgs() { } EditPkgs() { - local viewed timestamp i j erreditpkg action + local viewed i j erreditpkg action # global cachedpkgs installscripts editor - [[ $noedit ]] && return + [[ "$noedit" ]] && return unset viewed for i in "$@"; do - [[ " ${cachedpkgs[@]} " =~ " $i " ]] && continue + [[ " ${cachedpkgs[*]} " =~ " $i " ]] && continue cd "$clonedir/$i" || exit 1 - unset timestamp - GetInstallScripts $i - if [[ ! $edit ]]; then - if [[ ! $displaybuildfiles = none ]]; then - if [[ $displaybuildfiles = diff && -e ".git/HEAD.prev" ]]; then + GetInstallScripts "$i" + if [[ ! "$edit" ]]; then + if [[ ! "$displaybuildfiles" = none ]]; then + if [[ "$displaybuildfiles" = diff && -e ".git/HEAD.prev" ]]; then # show diff diffcmd="git diff --no-ext-diff $(cut -f1 .git/HEAD.prev) -- . ':!\.SRCINFO'" if [[ -n "$(eval "$diffcmd")" ]]; then @@ -1139,7 +1129,7 @@ EditPkgs() { eval "$diffcmd" Note "i" $"${colorW}$i${reset} build files diff viewed" viewed='true' - (($? > 0)) && erreditpkg+=($i) + (($? > 0)) && erreditpkg+=("$i") fi else Note "w" $"${colorW}$i${reset} build files are up-to-date -- skipping" @@ -1148,19 +1138,19 @@ EditPkgs() { # show pkgbuild if Proceed "y" $"View $i PKGBUILD?"; then if [[ -e "PKGBUILD" ]]; then - $editor "PKGBUILD" && Note "i" $"${colorW}$i${reset} PKGBUILD viewed" - (($? > 0)) && erreditpkg+=($i) + "$editor" "PKGBUILD" && Note "i" $"${colorW}$i${reset} PKGBUILD viewed" + (($? > 0)) && erreditpkg+=("$i") else Note "e" $"Could not open ${colorW}$i${reset} PKGBUILD" fi fi # show install script - if [[ -n "${installscripts[@]}" ]]; then + if [[ -n "${installscripts[*]}" ]]; then for j in "${installscripts[@]}"; do if Proceed "y" $"View $j script?"; then if [[ -e "$j" ]]; then - $editor "$j" && Note "i" $"${colorW}$j${reset} script viewed" - (($? > 0)) && erreditpkg+=($i) + "$editor" "$j" && Note "i" $"${colorW}$j${reset} script viewed" + (($? > 0)) && erreditpkg+=("$i") else Note "e" $"Could not open ${colorW}$j${reset} script" fi @@ -1172,16 +1162,16 @@ EditPkgs() { else # show pkgbuild and install script if [[ -e "PKGBUILD" ]]; then - $editor "PKGBUILD" && Note "i" $"${colorW}$i${reset} PKGBUILD viewed" - (($? > 0)) && erreditpkg+=($i) + "$editor" "PKGBUILD" && Note "i" $"${colorW}$i${reset} PKGBUILD viewed" + (($? > 0)) && erreditpkg+=("$i") else Note "e" $"Could not open ${colorW}$i${reset} PKGBUILD" fi - if [[ -n "${installscripts[@]}" ]]; then + if [[ -n "${installscripts[*]}" ]]; then for j in "${installscripts[@]}"; do if [[ -e "$j" ]]; then - $editor "$j" && Note "i" $"${colorW}$j${reset} script viewed" - (($? > 0)) && erreditpkg+=($i) + "$editor" "$j" && Note "i" $"${colorW}$j${reset} script viewed" + (($? > 0)) && erreditpkg+=("$i") else Note "e" $"Could not open ${colorW}$j${reset} script" fi @@ -1190,18 +1180,16 @@ EditPkgs() { fi done - if [[ -n "${erreditpkg[@]}" ]]; then + if [[ -n "${erreditpkg[*]}" ]]; then for i in "${erreditpkg[@]}"; do Note "f" $"${colorW}$i${reset} errored on exit" done exit 1 fi - if [[ $displaybuildfiles = diff && $viewed = true ]]; then - [[ $installpkg ]] && action=$"installation" || action=$"download" - if ! Proceed "y" $"Proceed with $action?"; then - exit - fi + if [[ "$displaybuildfiles" = diff && "$viewed" = true ]]; then + [[ "$installpkg" ]] && action=$"installation" || action=$"download" + Proceed "y" $"Proceed with $action?" || exit fi } @@ -1211,43 +1199,43 @@ MakePkgs() { # global deps basepkgs sudoloop pkgsbase pkgsdeps aurpkgs aurdepspkgs depsAver builtpkg errmakepkg repoprovidersconflictingpkgs aurprovidersconflictingpkgs json # download - DownloadPkgs ${deps[@]} - EditPkgs ${basepkgs[@]} + DownloadPkgs "${deps[@]}" + EditPkgs "${basepkgs[@]}" # current orphan and optional packages - oldorphanpkgs=($($pacmanbin -Qdtq)) - oldoptionalpkgs=($($pacmanbin -Qdttq)) + oldorphanpkgs=($("$pacmanbin" -Qdtq)) + oldoptionalpkgs=($("$pacmanbin" -Qdttq)) oldoptionalpkgs=($(grep -xvf <(printf '%s\n' "${oldorphanpkgs[@]}") <(printf '%s\n' "${oldoptionalpkgs[@]}"))) # initialize sudo - if sudo -n $pacmanbin -V > /dev/null || sudo -v; then - [[ $sudoloop = true ]] && SudoV & + if sudo -n "$pacmanbin" -V > /dev/null || sudo -v; then + [[ "$sudoloop" = true ]] && SudoV & fi # 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 - pkgsdeps=($(sed 's/ # /\n/g' <<< ${pkgsdeps[@]} | tr -d '#' | sed '/^ $/d' | tr ' ' ',' | sed 's/^,//g;s/,$//g')) + pkgsdeps=($(sed 's/ # /\n/g' <<< "${pkgsdeps[@]}" | tr -d '#' | sed '/^ $/d' | tr ' ' ',' | sed 's/^,//g;s/,$//g')) # reverse deps order - basepkgs=($(awk '{for (i=NF;i>=1;i--) print $i}' <<< ${basepkgs[@]} | awk -F "\n" '{print}')) - pkgsdeps=($(awk '{for (i=NF;i>=1;i--) print $i}' <<< ${pkgsdeps[@]} | awk -F "\n" '{print}')) + basepkgs=($(awk '{for (i=NF;i>=1;i--) print $i}' <<< "${basepkgs[@]}" | awk -F "\n" '{print}')) + pkgsdeps=($(awk '{for (i=NF;i>=1;i--) print $i}' <<< "${pkgsdeps[@]}" | awk -F "\n" '{print}')) # integrity check for i in "${!basepkgs[@]}"; do # get split packages list - pkgsdepslist=($(awk -F "," '{for (k=1;k<=NF;k++) print $k}' <<< ${pkgsdeps[$i]})) + pkgsdepslist=($(awk -F "," '{for (k=1;k<=NF;k++) print $k}' <<< "${pkgsdeps[$i]}")) # cache check unset builtpkg - if [[ -z "$(grep -E "\-(bzr|git|hg|svn|daily.*|nightly.*)$" <<< ${basepkgs[$i]})" ]]; then + if ! grep -qE "\-(bzr|git|hg|svn|daily.*|nightly.*)$" <<< "${basepkgs[$i]}"; then for j in "${pkgsdepslist[@]}"; do depsAver="$(GetJson "$json" "Version" "$j")" - [[ $PKGDEST && ! $rebuild ]] && GetBuiltPkg "$j-$depsAver" "$PKGDEST" + [[ "$PKGDEST" && ! "$rebuild" ]] && GetBuiltPkg "$j-$depsAver" "$PKGDEST" done fi @@ -1255,32 +1243,32 @@ MakePkgs() { unset vcsclients vcsclients=($(grep -E "makedepends = (bzr|git|mercurial|subversion)$" "$clonedir/${basepkgs[$i]}/.SRCINFO" | awk -F " " '{print $NF}')) for j in "${vcsclients[@]}"; do - if [[ ! "${vcschecked[@]}" =~ "$j" ]]; then - [[ -z "$(expac -Qs '%n' "^$j$")" ]] && sudo $pacmanbin -S $j --asdeps --noconfirm + if [[ ! "${vcschecked[*]}" =~ "$j" ]]; then + [[ -z "$(expac -Qs '%n' "^$j$")" ]] && sudo "$pacmanbin" -S "$j" --asdeps --noconfirm vcschecked+=($j) fi done - if [[ ! $builtpkg || $rebuild ]]; then + if [[ ! "$builtpkg" || "$rebuild" ]]; then cd "$clonedir/${basepkgs[$i]}" || exit 1 Note "i" $"Checking ${colorW}${pkgsdeps[$i]}${reset} integrity..." - if [[ $silent = true ]]; then - makepkg -f --verifysource ${makeopts[@]} &>/dev/null + if [[ "$silent" = true ]]; then + makepkg -f --verifysource "${makeopts[@]}" &>/dev/null else - makepkg -f --verifysource ${makeopts[@]} + makepkg -f --verifysource "${makeopts[@]}" fi (($? > 0)) && errmakepkg+=(${pkgsdeps[$i]}) # extraction, prepare and pkgver update Note "i" $"Preparing ${colorW}${pkgsdeps[$i]}${reset}..." - if [[ $silent = true ]]; then - makepkg -od --skipinteg ${makeopts[@]} &>/dev/null + if [[ "$silent" = true ]]; then + makepkg -od --skipinteg "${makeopts[@]}" &>/dev/null else - makepkg -od --skipinteg ${makeopts[@]} + makepkg -od --skipinteg "${makeopts[@]}" fi (($? > 0)) && errmakepkg+=(${pkgsdeps[$i]}) fi done - if [[ -n "${errmakepkg[@]}" ]]; then + if [[ -n "${errmakepkg[*]}" ]]; then for i in "${errmakepkg[@]}"; do Note "f" $"failed to verify integrity or prepare ${colorW}$i${reset} package" done @@ -1297,29 +1285,29 @@ MakePkgs() { touch "$tmpdir/pacaur.build.lck" # install provider packages and repo conflicting packages that makepkg --noconfirm cannot handle - if [[ -n "${repoprovidersconflictingpkgs[@]}" ]]; then + if [[ -n "${repoprovidersconflictingpkgs[*]}" ]]; then Note "i" $"Installing ${colorW}${repoprovidersconflictingpkgs[@]}${reset} dependencies..." - sudo $pacmanbin -S ${repoprovidersconflictingpkgs[@]} --ask 36 --asdeps --noconfirm + sudo "$pacmanbin" -S "${repoprovidersconflictingpkgs[@]}" --ask 36 --asdeps --noconfirm fi # main for i in "${!basepkgs[@]}"; do # get split packages list - pkgsdepslist=($(awk -F "," '{for (k=1;k<=NF;k++) print $k}' <<< ${pkgsdeps[$i]})) + pkgsdepslist=($(awk -F "," '{for (k=1;k<=NF;k++) print $k}' <<< "${pkgsdeps[$i]}")) cd "$clonedir/${basepkgs[$i]}" || exit 1 # retrieve updated version aurdevelpkgsAver=($(makepkg --packagelist | awk -F "-" '{print $(NF-2)"-"$(NF-1)}')) - aurdevelpkgsAver=${aurdevelpkgsAver[0]} + aurdevelpkgsAver="${aurdevelpkgsAver[0]}" # build devel if necessary only (supported protocols only) - if [[ -n "$(grep -E "\-(bzr|git|hg|svn|daily.*|nightly.*)$" <<< ${basepkgs[$i]})" ]]; then + if grep -qE "\-(bzr|git|hg|svn|daily.*|nightly.*)$" <<< "${basepkgs[$i]}"; then # check split packages update unset basepkgsupdate checkpkgsdepslist for j in "${pkgsdepslist[@]}"; do aurdevelpkgsQver=$(expac -Qs '%v' "^$j$" | head -1) - if [[ -n $aurdevelpkgsQver && $(vercmp "$aurdevelpkgsQver" "$aurdevelpkgsAver") -ge 0 ]] && [[ $needed && ! $rebuild ]]; then + if [[ -n "$aurdevelpkgsQver" && "$(vercmp "$aurdevelpkgsQver" "$aurdevelpkgsAver")" -ge 0 ]] && [[ "$needed" && ! "$rebuild" ]]; then Note "w" $"${colorW}$j${reset} is up-to-date -- skipping" continue else @@ -1327,8 +1315,8 @@ MakePkgs() { checkpkgsdepslist+=($j) fi done - if [[ $basepkgsupdate ]]; then - pkgsdepslist=(${checkpkgsdepslist[@]}) + if [[ "$basepkgsupdate" ]]; then + pkgsdepslist=("${checkpkgsdepslist[@]}") else continue fi @@ -1338,16 +1326,16 @@ MakePkgs() { for j in "${pkgsdepslist[@]}"; do unset builtpkg depsAver="$aurdevelpkgsAver" - [[ $PKGDEST && ! $rebuild ]] && GetBuiltPkg "$j-$depsAver" "$PKGDEST" - if [[ $builtpkg ]]; then - if [[ " ${aurdepspkgs[@]} " =~ " $j " || $installpkg ]]; then + [[ "$PKGDEST" && ! "$rebuild" ]] && GetBuiltPkg "$j-$depsAver" "$PKGDEST" + 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 -D $j --asdeps ${pacopts[@]} &>/dev/null + sudo "$pacmanbin" -U "$builtpkg" --ask 36 "${pacopts[@]/--quiet}" --noconfirm + [[ ! " ${aurpkgs[*]} " =~ " $j " ]] && sudo "$pacmanbin" -D "$j" --asdeps "${pacopts[@]}" &>/dev/null else Note "w" $"Package ${colorW}$j${reset} already available in cache" fi - pkgsdeps=($(tr ' ' '\n' <<< ${pkgsdeps[@]} | sed "s/^$j,//g;s/,$j$//g;s/,$j,/,/g;s/^$j$/#/g")) + pkgsdeps=($(tr ' ' '\n' <<< "${pkgsdeps[@]}" | sed "s/^$j,//g;s/,$j$//g;s/,$j,/,/g;s/^$j$/#/g")) continue fi done @@ -1357,25 +1345,25 @@ MakePkgs() { Note "i" $"Building ${colorW}${pkgsdeps[$i]}${reset} package(s)..." # install then remove binary deps - makeopts=(${makeopts[@]/-r/}) + makeopts=("${makeopts[@]/-r/}") - if [[ ! $installpkg ]]; then + if [[ ! "$installpkg" ]]; then unset isaurdeps for j in "${pkgsdepslist[@]}"; do - [[ " ${aurdepspkgs[@]} " =~ " $j " ]] && isaurdeps=true + [[ " ${aurdepspkgs[*]} " =~ " $j " ]] && isaurdeps=true done - [[ $isaurdeps != true ]] && makeopts+=("-r") + [[ "$isaurdeps" != true ]] && makeopts+=("-r") fi - if [[ $silent = true ]]; then - makepkg -sefc ${makeopts[@]} --noconfirm &>/dev/null + if [[ "$silent" = true ]]; then + makepkg -sefc "${makeopts[@]}" --noconfirm &>/dev/null else - makepkg -sefc ${makeopts[@]} --noconfirm + makepkg -sefc "${makeopts[@]}" --noconfirm fi # error check if (($? > 0)); then - errmakepkg+=(${pkgsdeps[$i]}) + errmakepkg+=("${pkgsdeps[$i]}") continue # skip install fi @@ -1389,35 +1377,35 @@ MakePkgs() { else GetBuiltPkg "$j-$depsAver" "$clonedir/${basepkgs[$i]}" fi - [[ " ${aurdepspkgs[@]} " =~ " $j " ]] && builtdepspkgs+=($builtpkg) || builtpkgs+=($builtpkg) + [[ " ${aurdepspkgs[*]} " =~ " $j " ]] && builtdepspkgs+=($builtpkg) || builtpkgs+=($builtpkg) done # install - if [[ $installpkg || -z "${builtpkgs[@]}" ]]; then + if [[ $installpkg || -z "${builtpkgs[*]}" ]]; then Note "i" $"Installing ${colorW}${pkgsdeps[$i]}${reset} package(s)..." - sudo $pacmanbin -U ${builtdepspkgs[@]} ${builtpkgs[@]} --ask 36 ${pacopts[@]/--quiet} --noconfirm + sudo "$pacmanbin" -U "${builtdepspkgs[@]}" "${builtpkgs[@]}" --ask 36 "${pacopts[@]/--quiet}" --noconfirm fi # set dep status if [[ $installpkg ]]; then for j in "${pkgsdepslist[@]}"; do - [[ ! " ${aurpkgs[@]} " =~ " $j " ]] && sudo $pacmanbin -D $j --asdeps &>/dev/null - [[ " ${pacopts[@]} " =~ --(asdep|asdeps) ]] && sudo $pacmanbin -D $j --asdeps &>/dev/null - [[ " ${pacopts[@]} " =~ --(asexp|asexplicit) ]] && sudo $pacmanbin -D $j --asexplicit &>/dev/null + [[ ! " ${aurpkgs[*]} " =~ " $j " ]] && sudo "$pacmanbin" -D "$j" --asdeps &>/dev/null + [[ " ${pacopts[*]} " =~ --(asdep|asdeps) ]] && sudo "$pacmanbin" -D "$j" --asdeps &>/dev/null + [[ " ${pacopts[*]} " =~ --(asexp|asexplicit) ]] && sudo "$pacmanbin" -D "$j" --asexplicit &>/dev/null done fi done # remove AUR deps if [[ ! $installpkg ]]; then - [[ -n "${aurdepspkgs[@]}" ]] && aurdepspkgs=($(expac -Q '%n' "${aurdepspkgs[@]}")) - if [[ -n "${aurdepspkgs[@]}" ]]; then + [[ -n "${aurdepspkgs[*]}" ]] && aurdepspkgs=($(expac -Q '%n' "${aurdepspkgs[@]}")) + if [[ -n "${aurdepspkgs[*]}" ]]; then Note "i" $"Removing installed AUR dependencies..." - sudo $pacmanbin -Rsn ${aurdepspkgs[@]} --noconfirm + sudo "$pacmanbin" -Rsn "${aurdepspkgs[@]}" --noconfirm fi # readd removed conflicting packages - [[ -n "${aurconflictingpkgsrm[@]}" ]] && sudo $pacmanbin -S ${aurconflictingpkgsrm[@]} --ask 36 --asdeps --needed --noconfirm - [[ -n "${repoconflictingpkgsrm[@]}" ]] && sudo $pacmanbin -S ${repoconflictingpkgsrm[@]} --ask 36 --asdeps --needed --noconfirm + [[ -n "${aurconflictingpkgsrm[*]}" ]] && sudo "$pacmanbin" -S "${aurconflictingpkgsrm[@]}" --ask 36 --asdeps --needed --noconfirm + [[ -n "${repoconflictingpkgsrm[*]}" ]] && sudo "$pacmanbin" -S "${repoconflictingpkgsrm[@]}" --ask 36 --asdeps --needed --noconfirm fi # remove locks @@ -1425,12 +1413,12 @@ MakePkgs() { rm -f "$tmpdir/pacaur.sudov.lck" # new orphan and optional packages check - orphanpkgs=($($pacmanbin -Qdtq)) + orphanpkgs=($("$pacmanbin" -Qdtq)) neworphanpkgs=($(grep -xvf <(printf '%s\n' "${oldorphanpkgs[@]}") <(printf '%s\n' "${orphanpkgs[@]}"))) for i in "${neworphanpkgs[@]}"; do Note "w" $"${colorW}$i${reset} is now an ${colorY}orphan${reset} package" done - optionalpkgs=($($pacmanbin -Qdttq)) + optionalpkgs=($("$pacmanbin" -Qdttq)) optionalpkgs=($(grep -xvf <(printf '%s\n' "${orphanpkgs[@]}") <(printf '%s\n' "${optionalpkgs[@]}"))) newoptionalpkgs=($(grep -xvf <(printf '%s\n' "${oldoptionalpkgs[@]}") <(printf '%s\n' "${optionalpkgs[@]}"))) for i in "${newoptionalpkgs[@]}"; do @@ -1438,7 +1426,7 @@ MakePkgs() { done # makepkg and install failure check - if [[ -n "${errmakepkg[@]}" || -n "${errinstall[@]}" ]]; then + if [[ -n "${errmakepkg[*]}" || -n "${errinstall[*]}" ]]; then for i in "${errmakepkg[@]}"; do Note "f" $"failed to build ${colorW}$i${reset} package(s)" done @@ -1453,85 +1441,85 @@ CheckUpdates() { # global aur repo if [[ ! "$aur" ]]; then - $pacmanbin ${pacmanarg[@]} ${pacopts[@]}; exitrepo=$? + "$pacmanbin" "${pacmanarg[@]}" "${pacopts[@]}"; exitrepo=$? fi GetIgnoredPkgs - if [[ ! "$repo" && ! "$pacn" && $fallback = true ]]; then - [[ -z "${pkgs[@]}" ]] && foreignpkgs=($($pacmanbin -Qmq)) || foreignpkgs=(${pkgs[@]}) - if [[ -n "${foreignpkgs[@]}" ]]; then - SetJson ${foreignpkgs[@]} + if [[ ! "$repo" && ! "$pacn" && "$fallback" = true ]]; then + [[ -z "${pkgs[*]}" ]] && foreignpkgs=($("$pacmanbin" -Qmq)) || foreignpkgs=(${pkgs[@]}) + if [[ -n "${foreignpkgs[*]}" ]]; then + SetJson "${foreignpkgs[@]}" aurpkgsAname=($(GetJson "$json" "Name")) aurpkgsAver=($(GetJson "$json" "Version")) - aurpkgsQver=($(expac -Q '%v' ${aurpkgsAname[@]})) + aurpkgsQver=($(expac -Q '%v' "${aurpkgsAname[@]}")) for i in "${!aurpkgsAname[@]}"; do - [[ $(vercmp "${aurpkgsAver[$i]}" "${aurpkgsQver[$i]}") -gt 0 ]] && aurpkgsQood+=(${aurpkgsAname[$i]}); + [[ "$(vercmp "${aurpkgsAver[$i]}" "${aurpkgsQver[$i]}")" -gt 0 ]] && aurpkgsQood+=("${aurpkgsAname[$i]}"); done fi # add devel packages - if [[ $devel ]]; then - if [[ ! $needed ]]; then + if [[ "$devel" ]]; then + if [[ ! "$needed" ]]; then for i in "${foreignpkgs[@]}"; do - [[ -n "$(grep -E "\-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$" <<< $i)" ]] && aurpkgsQood+=($i) + grep -qE "\-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$" <<< "$i" && aurpkgsQood+=("$i") done else - foreignpkgsbase=($(expac -Q '%n %e' ${foreignpkgs[@]} | awk '{if ($2 == "(null)") print $1; else print $2}')) - foreignpkgsnobase=($(expac -Q '%n' ${foreignpkgs[@]})) + foreignpkgsbase=($(expac -Q '%n %e' "${foreignpkgs[@]}" | awk '{if ($2 == "(null)") print $1; else print $2}')) + foreignpkgsnobase=($(expac -Q '%n' "${foreignpkgs[@]}")) for i in "${!foreignpkgsbase[@]}"; do - if [[ -n "$(grep -E "\-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$" <<< ${foreignpkgsbase[$i]})" ]]; then + if grep -qE "\-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$" <<< "${foreignpkgsbase[$i]}"; then [[ ! -d "$clonedir/${foreignpkgsbase[$i]}" ]] && DownloadPkgs "${foreignpkgsbase[$i]}" &>/dev/null cd "$clonedir/${foreignpkgsbase[$i]}" # 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)}')) - aurdevelpkgsAver=${aurdevelpkgsAver[0]} - aurdevelpkgsQver=$(expac -Qs '%v' "^${foreignpkgsbase[$i]}$" | head -1) - if [[ $(vercmp "$aurdevelpkgsQver" "$aurdevelpkgsAver") -ge 0 ]]; then + aurdevelpkgsAver="${aurdevelpkgsAver[0]}" + aurdevelpkgsQver="$(expac -Qs '%v' "^${foreignpkgsbase[$i]}$" | head -1)" + if [[ "$(vercmp "$aurdevelpkgsQver" "$aurdevelpkgsAver")" -ge 0 ]]; then continue else - aurpkgsQood+=(${foreignpkgsnobase[$i]}) - aurpkgsQoodAver+=($aurdevelpkgsAver) + aurpkgsQood+=("${foreignpkgsnobase[$i]}") + aurpkgsQoodAver+=("$aurdevelpkgsAver") fi fi done fi fi - if [[ -n "${aurpkgsQood[@]}" && ! $quiet ]]; then - SetJson ${aurpkgsQood[@]} + if [[ -n "${aurpkgsQood[*]}" && ! "$quiet" ]]; then + SetJson "${aurpkgsQood[@]}" aurpkgsAname=($(GetJson "$json" "Name")) aurpkgsAname=($(expac -Q '%n' "${aurpkgsAname[@]}")) aurpkgsAver=($(GetJson "$json" "Version")) aurpkgsQver=($(expac -Q '%v' "${aurpkgsAname[@]}")) for i in "${!aurpkgsAname[@]}"; do - if [[ -n "$(grep -E "\-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$" <<< ${aurpkgsAname[$i]})" ]]; then - [[ ! $needed ]] && aurpkgsAver[$i]=$"latest" || aurpkgsAver[$i]=${aurpkgsQoodAver[$i]} + if grep -qE "\-(cvs|svn|git|hg|bzr|darcs|daily.*|nightly.*)$" <<< "${aurpkgsAname[$i]}"; then + [[ ! "$needed" ]] && aurpkgsAver[$i]=$"latest" || aurpkgsAver[$i]="${aurpkgsQoodAver[$i]}" fi done fi fi - if [[ -n "${aurpkgsQood[@]}" && $fallback = true ]]; then + if [[ -n "${aurpkgsQood[*]}" && "$fallback" = true ]]; then exitaur=$? - if [[ ! $quiet ]]; then + if [[ ! "$quiet" ]]; then for i in "${!aurpkgsAname[@]}"; do - [[ "${ignoredpkgs[@]}" =~ "${aurpkgsAname[$i]}" ]] && aurpkgsQignore[$i]=$"[ignored]" + [[ "${ignoredpkgs[*]}" =~ "${aurpkgsAname[$i]}" ]] && aurpkgsQignore[$i]=$"[ignored]" printf "${colorW}%s${reset} ${colorG}%s${reset} -> ${colorG}%s${reset} %s\n" "${aurpkgsAname[$i]}" "${aurpkgsQver[$i]}" "${aurpkgsAver[$i]}" "${aurpkgsQignore[$i]}" done else - tr ' ' '\n' <<< ${aurpkgsQood[@]} | sort -u + tr ' ' '\n' <<< "${aurpkgsQood[@]}" | sort -u fi fi # exit code if [[ -n "$exitrepo" && -n "$exitaur" ]]; then - [[ $exitrepo -eq 0 || $exitaur -eq 0 ]] && exit 0 || exit 1 + [[ "$exitrepo" -eq 0 || "$exitaur" -eq 0 ]] && exit 0 || exit 1 elif [[ -n "$exitrepo" ]]; then - [[ $exitrepo -eq 0 ]] && exit 0 || exit 1 + [[ "$exitrepo" -eq 0 ]] && exit 0 || exit 1 elif [[ -n "$exitaur" ]]; then - [[ $exitaur -eq 0 ]] && exit 0 || exit 1 + [[ "$exitaur" -eq 0 ]] && exit 0 || exit 1 else exit 1 fi @@ -1539,17 +1527,16 @@ CheckUpdates() { CleanCache() { cachedir=($(pacman-conf CacheDir)) - [[ $cachedir ]] && cachedir=${cachedir[@]%/} && PKGDEST=${PKGDEST%/} - - if [[ $PKGDEST && ! " ${cachedir[@]} " =~ " $PKGDEST " ]]; then - [[ $ccount -eq 1 ]] && printf "\n%s\n %s\n" $"Packages to keep:" $"All locally installed packages" + [[ "${cachedir[*]}" ]] && cachedir=("${cachedir[@]%/}") && PKGDEST="${PKGDEST%/}" + if [[ "$PKGDEST" && ! " ${cachedir[*]} " =~ " $PKGDEST " ]]; then + [[ "$ccount" -eq 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 -eq 1 ]]; then + 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 - pkgname=$(sed "s%\(.*\)-.*-.*%\1%g" <<< $i) - [[ $i != $(expac -Q '%n-%v' "$pkgname") ]] && rm "$PKGDEST"/$i-* + for i in $(ls "$PKGDEST" | sed "s%\(.*\)-.*%\1%g"); do + pkgname="$(sed "s%\(.*\)-.*-.*%\1%g" <<< "$i")" + [[ "$i" != "$(expac -Q '%n-%v' "$pkgname")" ]] && rm "$PKGDEST"/"$i"-* done fi else @@ -1560,10 +1547,10 @@ CleanCache() { fi fi - if [[ $SRCDEST ]]; then - [[ $ccount -eq 1 ]] && printf "\n%s\n %s\n" $"Sources to keep:" $"All development packages sources" + if [[ "$SRCDEST" ]]; then + [[ "$ccount" -eq 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 -eq 1 ]]; then + if [[ "$ccount" -eq 1 ]]; then if 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 @@ -1576,20 +1563,20 @@ CleanCache() { fi fi if [[ -d "$clonedir" ]]; then - cd $clonedir - if [[ $ccount -eq 1 ]]; then - if [[ -z "${pkgs[@]}" ]]; then + cd "$clonedir" + if [[ "$ccount" -eq 1 ]]; then + if [[ -z "${pkgs[*]}" ]]; then printf "\n%s\n %s\n" $"Clones to keep:" $"All locally installed clones" else printf "\n%s\n %s\n" $"Clones to keep:" $"All other locally installed clones" fi fi printf "\n%s %s\n" $"AUR clone directory:" "$clonedir" - if [[ $ccount -eq 1 ]]; then - foreignpkgsbase=($(expac -Q '%n %e' $($pacmanbin -Qmq) | awk '{if ($2 == "(null)") print $1; else print $2}')) + if [[ "$ccount" -eq 1 ]]; then + foreignpkgsbase=($(expac -Q '%n %e' "$("$pacmanbin" -Qmq)" | awk '{if ($2 == "(null)") print $1; else print $2}')) # get target - if [[ -n "${pkgs[@]}" ]]; then - pkgsbase=($(expac -Q %e ${pkgs[@]})) + if [[ -n "${pkgs[*]}" ]]; then + pkgsbase=($(expac -Q %e "${pkgs[@]}")) aurpkgsbase=($(grep -xf <(printf '%s\n' "${pkgsbase[@]}") <(printf '%s\n' "${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..." @@ -1601,10 +1588,10 @@ CleanCache() { 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 clone in *; do - [[ -d "$clonedir/$clone" && ! " ${foreignpkgsbase[@]} " =~ " $clone " ]] && rm -rf "$clonedir/$clone" + [[ -d "$clonedir/$clone" && ! " ${foreignpkgsbase[*]} " =~ " $clone " ]] && rm -rf "$clonedir/$clone" done fi - if [[ ! $PKGDEST || ! $SRCDEST ]]; then + 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 clone in *; do @@ -1628,13 +1615,13 @@ CleanCache() { GetIgnoredPkgs() { # global ignoredpkgs ignoredpkgs+=($(pacman-conf IgnorePkg)) - ignoredpkgs=(${ignoredpkgs[@]//,/ }) + ignoredpkgs=("${ignoredpkgs[@]//,/ }") } GetIgnoredGrps() { # global ignoredgrps ignoredgrps+=($(pacman-conf IgnoreGroup)) - ignoredgrps=(${ignoredgrps[@]//,/ }) + ignoredgrps=("${ignoredgrps[@]//,/ }") } GetInstallScripts() { @@ -1643,7 +1630,7 @@ GetInstallScripts() { [[ ! -d "$clonedir/$1" ]] && return unset installscriptspath installscripts installscriptspath=($(find "$clonedir/$1/" -maxdepth 1 -name "*.install")) - [[ -n "${installscriptspath[@]}" ]] && installscripts=($(basename -a ${installscriptspath[@]})) + [[ -n "${installscriptspath[*]}" ]] && installscripts=($(basename -a "${installscriptspath[@]}")) } GetBuiltPkg() { @@ -1651,7 +1638,7 @@ GetBuiltPkg() { # global builtpkg # check PKGEXT suffixe first, then default .xz suffixe for repository packages in pacman cache # and lastly all remaining suffixes in case PKGEXT is locally overridden - for pkgext in $PKGEXT .pkg.tar.xz .pkg.tar .pkg.tar.gz .pkg.tar.bz2 .pkg.tar.lzo .pkg.tar.lrz .pkg.tar.Z; do + for pkgext in "$PKGEXT" .pkg.tar.xz .pkg.tar .pkg.tar.gz .pkg.tar.bz2 .pkg.tar.lzo .pkg.tar.lrz .pkg.tar.Z; do builtpkg="$2/$1-${CARCH}$pkgext" [[ ! -f "$builtpkg" ]] && builtpkg="$2/$1-any$pkgext" [[ -f "$builtpkg" ]] && break; @@ -1667,19 +1654,19 @@ GetPkgbase() { pkgsbase+=($(GetJson "$json" "PackageBase" "$i")) done for i in "${pkgsbase[@]}"; do - [[ " ${basepkgs[@]} " =~ " $i " ]] && continue - basepkgs+=($i) + [[ " ${basepkgs[*]} " =~ " $i " ]] && continue + basepkgs+=("$i") done } declare -A jsoncache SetJson() { - if [[ $# -eq 0 ]]; then + if [[ "$#" -eq 0 ]]; then json="{}" else # global json if [[ -z "${jsoncache[$@]}" ]]; then - jsoncache[$@]="$(auracle rawinfo -- $@)" + jsoncache[$@]="$(auracle rawinfo -- "$@")" fi json="${jsoncache[$@]}" fi @@ -1688,18 +1675,15 @@ SetJson() { GetJson() { local filter="." json="$1" field="$2" pkgname="$3" - if [[ -n $pkgname ]]; then - filter="select(.Name == \"$pkgname\")" - fi + [[ "$pkgname" ]] && filter="select(.Name == \"$pkgname\")" - jq -rM ".results[] | $filter | select(.$field) .$field | if type==\"array\" then .[] else . end" <<< "$json" 2> /dev/null - [[ $? != "0" ]] && Note "e" $"Failed to parse JSON" + jq -rM ".results[] | $filter | select(.$field) .$field | if type==\"array\" then .[] else . end" <<< "$json" 2> /dev/null || Note "e" $"Failed to parse JSON" } CheckRequires() { local Qrequires - Qrequires=($(expac -Q '%n %D' | grep -E " $@[\+]*[^a-zA-Z0-9_@\.\+-]+" | awk '{print $1}' | tr '\n' ' ')) - if [[ -n "${Qrequires[@]}" ]]; then + Qrequires=($(expac -Q '%n %D' | grep -E " $*[\+]*[^a-zA-Z0-9_@\.\+-]+" | awk '{print $1}' | tr '\n' ' ')) + if [[ -n "${Qrequires[*]}" ]]; then Note "f" $"failed to prepare transaction (could not satisfy dependencies)" Note "e" $"${Qrequires[@]}: requires $@" fi @@ -1713,28 +1697,36 @@ Proceed() { [[ "$TERM" = dumb || "$cleancache" ]] && local readline=1 case "$1" in y) printf "${colorB}%s${reset} ${colorW}%s${reset}" "::" "$2 [$Y/$n] " - if [[ $noconfirm ]]; then + if [[ "$noconfirm" ]]; then echo return 0 fi while true; do - [[ "$readline" ]] && read -r answer || read -s -r -n 1 answer - case $answer in - $Y|$y|'') ret=0; break;; - $N|$n) ret=1; break;; + if [[ "$readline" ]]; then + read -r answer + else + read -s -r -n 1 answer + fi + case "$answer" in + "$Y"|"$y"|'') ret=0; break;; + "$N"|"$n") ret=1; break;; *) [[ "$readline" ]] && ret=1 && break;; esac done;; n) printf "${colorB}%s${reset} ${colorW}%s${reset}" "::" "$2 [$y/$N] " - if [[ $noconfirm ]]; then + if [[ "$noconfirm" ]]; then echo return 0 fi while true; do - [[ "$readline" ]] && read -r answer || read -s -r -n 1 answer - case $answer in - $N|$n|'') ret=0; break;; - $Y|$y) ret=1; break;; + if [[ "$readline" ]]; then + read -r answer + else + read -s -r -n 1 answer + fi + case "$answer" in + "$N"|"$n"|'') ret=0; break;; + "$Y"|"$y") ret=1; break;; *) [[ "$readline" ]] && ret=0 && break;; esac done;; @@ -1755,20 +1747,20 @@ Note() { GetLength() { local length=0 i for i in "$@"; do - x=${#i} - [[ $x -gt $length ]] && length=$x + x="${#i}" + [[ "$x" -gt "$length" ]] && length="$x" done - echo $length + echo "$length" } NothingToDo() { - [[ -z "$@" ]] && printf "%s\n" $" there is nothing to do" && exit || return 0 + [[ -z "$*" ]] && printf "%s\n" $" there is nothing to do" && exit || return 0 } SudoV() { touch "$tmpdir/pacaur.sudov.lck" while [[ -e "$tmpdir/pacaur.sudov.lck" ]]; do - sudo $pacmanbin -V > /dev/null + sudo "$pacmanbin" -V > /dev/null sleep 298 done } @@ -1858,120 +1850,125 @@ while true; do --ignore) ignoredpkgs+=("$2"); shift;; --color) color="$2"; shift;; --literal) auropts+=("$1");; - --@(by|searchby|rsort|sort)) auropts+=("$1=$2"); shift;; + --@(by|searchby)) auropts+=("$1=$2"); shift;; + --sort) sortorder="ascending"; sortby="$2"; shift;; + --rsort) sortorder="descending"; sortby="$2"; shift;; -d|--nodeps) nodeps=1; makeopts+=("$1"); ((dcount++));; --assume-installed) assumeinstalled+=("$2"); shift;; --@(devel|needed|noconfirm|noedit|rebuild)) declare "${1/--}"=1;; --silent) silent=true; pacopts+=("--quiet"); auropts+=("--quiet") makeopts+=("--log");; -y|--refresh) [[ ! "$aur" ]] && refresh=1;; -e) [[ "$pacQ" ]] && pacopts+=("--explicit"); edit=1; [[ "$pac" -eq 0 ]] && operation=edit;; - -h|--help) [[ "$pac" -ge 1 ]] && unset operation || Usage;; + -h|--help) unset operation; [[ "$pac" -eq 0 ]] && Usage;; -v|--version) [[ ! "$pac" -ge 1 || "$1" = --version ]] && echo "pacaur $version" && exit 0;; --) shift; break;; esac shift done +# sorting +[[ "$sortorder" = ascending ]] && auropts+=("--sort=$sortby") +[[ "$sortorder" = descending ]] && auropts+=("--rsort=$sortby") + # packages -[[ -n "$@" ]] && pkgs+=("$@") +[[ -n "$*" ]] && pkgs+=("$@") # color if [[ ! "$color" ]]; then - [[ ! "$(pacman-conf Color)" ]] || [[ "$quiet" && "$search" || $operation = upgrades ]] && color=never || color=auto + [[ ! "$(pacman-conf Color)" ]] || [[ "$quiet" && "$search" || "$operation" = upgrades ]] && color=never || color=auto fi -pacopts+=("--color=$color") && auropts+=("--color=$color") +pacopts+=("--color=$color") && auropts+=("--color=$color") && [[ "$color" = never ]] && makeopts+=("--nocolor") if [[ ! "$color" = never ]]; then reset="\e[0m"; colorR="\e[1;31m"; colorG="\e[1;32m"; colorY="\e[1;33m" - colorB="\e[1;34m"; colorM="\e[1;35m"; colorC="\e[1;36m"; colorW="\e[1;39m" + colorB="\e[1;34m"; colorM="\e[1;35m"; colorW="\e[1;39m" fi # sanity check [[ "$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" -[[ $pacS ]] && [[ $cleancache ]] && unset search info upgrade -[[ ! $(command -v "${editor%% *}") ]] && Note "e" $"${colorW}\$VISUAL${reset} and ${colorW}\$EDITOR${reset} environment variables not set or defined ${colorW}editor${reset} not found" -[[ "$PACMAN" = $(basename "$0") ]] && Note "e" $"you cannot use ${colorW}pacaur${reset} as PACMAN environment variable" +[[ "$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" +[[ "$pacS" ]] && [[ "$cleancache" ]] && unset search info upgrade +[[ ! "$(command -v "${editor%% *}")" ]] && Note "e" $"${colorW}\$VISUAL${reset} and ${colorW}\$EDITOR${reset} environment variables not set or defined ${colorW}editor${reset} not found" +[[ "$PACMAN" = "$(basename "$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" -[[ -z "${pkgs[@]}" ]] && [[ $operation = sync || $operation = edit ]] && [[ ! $refresh && ! $upgrade && ! $cleancache ]] && Note "e" $"no targets specified (use -h for help)" -[[ -z "${pkgs[@]}" && -n "$(grep -e "-[RU]" <<< ${pacmanarg[@]})" && -z "$(grep -e "-[h]" <<< ${pacmanarg[@]})" ]] && Note "e" $"no targets specified (use -h for help)" -[[ $repo && $aur ]] && Note "e" $"invalid option: '--repo' and '--aur' may not be used together" +[[ -z "${pkgs[*]}" ]] && [[ "$operation" = sync || "$operation" = edit ]] && [[ ! "$refresh" && ! "$upgrade" && ! "$cleancache" ]] && Note "e" $"no targets specified (use -h for help)" +[[ -z "${pkgs[*]}" ]] && grep -qe "-[RU]" <<< "${pacmanarg[@]}" && ! grep -qe "-[h]" <<< "${pacmanarg[@]}" && Note "e" $"no targets specified (use -h for help)" +[[ "$repo" && "$aur" ]] && Note "e" $"invalid option: '--repo' and '--aur' may not be used together" # operations -case $operation in +case "$operation" in edit) # edit (-e) handling - GetPkgbase ${pkgs[@]} - EditPkgs ${pkgsbase[@]} + GetPkgbase "${pkgs[@]}" + EditPkgs "${pkgsbase[@]}" exit;; sync) # search (-Ss, -s) handling - if [[ $search ]]; then - if [[ $refresh ]]; then - sudo $pacmanbin ${pacmanarg[@]} ${pacopts[@]} -- ${pkgs[@]} + if [[ "$search" ]]; then + if [[ "$refresh" ]]; then + sudo "$pacmanbin" "${pacmanarg[@]}" "${pacopts[@]}" -- "${pkgs[@]}" else - $pacmanbin ${pacmanarg[@]} ${pacopts[@]} -- ${pkgs[@]} + "$pacmanbin" "${pacmanarg[@]}" "${pacopts[@]}" -- "${pkgs[@]}" fi exitrepo=$? - if [[ ! $repo && $fallback = true || $aur ]]; then - auracle ${auropts[@]} -- $@ ${pkgs[@]} + if [[ ! "$repo" && "$fallback" = true || "$aur" ]]; then + auracle "${auropts[@]}" -- "$@" "${pkgs[@]}" exitaur=$? fi # exit code if [[ -n "$exitrepo" && -n "$exitaur" ]]; then - [[ $exitrepo -eq 0 || $exitaur -eq 0 ]] && exit 0 || exit 1 + [[ "$exitrepo" -eq 0 || "$exitaur" -eq 0 ]] && exit 0 || exit 1 elif [[ -n "$exitrepo" ]]; then - [[ $exitrepo -eq 0 ]] && exit 0 || exit 1 + [[ "$exitrepo" -eq 0 ]] && exit 0 || exit 1 elif [[ -n "$exitaur" ]]; then - [[ $exitaur -eq 0 ]] && exit 0 || exit 1 + [[ "$exitaur" -eq 0 ]] && exit 0 || exit 1 else exit 1 fi # info (-Si, -i) handling - elif [[ $info ]]; then - if [[ -z "${pkgs[@]}" ]]; then - $pacmanbin ${pacmanarg[@]} ${pacopts[@]} + elif [[ "$info" ]]; then + if [[ -z "${pkgs[*]}" ]]; then + "$pacmanbin" "${pacmanarg[@]}" "${pacopts[@]}" else - ClassifyPkgs ${pkgs[@]} + ClassifyPkgs "${pkgs[@]}" fi - if [[ -n "${repopkgs[@]}" ]]; then - [[ $refresh ]] && sudo $pacmanbin ${pacmanarg[@]} ${pacopts[@]} ${repopkgs[@]} - [[ ! $refresh ]] && $pacmanbin ${pacmanarg[@]} ${pacopts[@]} ${repopkgs[@]} + if [[ -n "${repopkgs[*]}" ]]; then + [[ "$refresh" ]] && sudo "$pacmanbin" "${pacmanarg[@]}" "${pacopts[@]}" "${repopkgs[@]}" + [[ ! "$refresh" ]] && "$pacmanbin" "${pacmanarg[@]}" "${pacopts[@]}" "${repopkgs[@]}" fi - if [[ -n "${aurpkgs[@]}" ]]; then - [[ $refresh ]] && [[ -z "${repopkgs[@]}" ]] && sudo $pacmanbin -Sy ${pacopts[@]} - if [[ $fallback = true && ! $aur ]]; then + if [[ -n "${aurpkgs[*]}" ]]; then + [[ "$refresh" ]] && [[ -z "${repopkgs[*]}" ]] && sudo "$pacmanbin" -Sy "${pacopts[@]}" + if [[ "$fallback" = true && ! "$aur" ]]; then Note "w" $"Package(s) ${colorW}${aurpkgs[*]}${reset} not found in repositories, trying ${colorM}AUR${reset}..." fi - auracle ${auropts[@]} -- $@ ${aurpkgs[@]} + auracle "${auropts[@]}" -- "$@" "${aurpkgs[@]}" fi # clean (-Sc) handling - elif [[ $cleancache ]]; then - [[ ! $aur ]] && sudo $pacmanbin ${pacmanarg[@]} ${pacopts[@]} ${repopkgs[@]} - [[ ! $repo ]] && [[ $fallback = true || $aur ]] && CleanCache ${pkgs[@]} + elif [[ "$cleancache" ]]; then + [[ ! "$aur" ]] && sudo "$pacmanbin" "${pacmanarg[@]}" "${pacopts[@]}" "${repopkgs[@]}" + [[ ! "$repo" ]] && [[ "$fallback" = true || "$aur" ]] && CleanCache "${pkgs[@]}" # sysupgrade (-Su, -u) handling - elif [[ $upgrade ]]; then - [[ -n "${pkgs[@]}" ]] && ClassifyPkgs ${pkgs[@]} - if [[ ! $aur ]]; then - sudo $pacmanbin ${pacmanarg[@]} ${pacopts[@]} ${repopkgs[@]} - (($? > 0)) && [[ $repo ]] && exit 1 - [[ $repo ]] && exit 0 + elif [[ "$upgrade" ]]; then + [[ -n "${pkgs[*]}" ]] && ClassifyPkgs "${pkgs[@]}" + if [[ ! "$aur" ]]; then + sudo "$pacmanbin" "${pacmanarg[@]}" "${pacopts[@]}" "${repopkgs[@]}" || [[ "$repo" ]] && exit 1 + [[ "$repo" ]] && exit 0 fi - if [[ -n "${aurpkgs[@]}" ]] && [[ $fallback = true && ! $aur ]]; then + if [[ -n "${aurpkgs[*]}" ]] && [[ "$fallback" = true && ! "$aur" ]]; then Note "w" $"Package(s) ${colorW}${aurpkgs[*]}${reset} not found in repositories, trying ${colorM}AUR${reset}..." fi - [[ ! $repo ]] && [[ $fallback = true || $aur ]] && Core + [[ ! "$repo" ]] && [[ "$fallback" = true || "$aur" ]] && Core # sync (-S, -y), downloadonly (-Sw, -m), refresh (-Sy) else - if [[ -z "${pkgs[@]}" ]]; then - sudo $pacmanbin ${pacmanarg[@]} ${pacopts[@]} + if [[ -z "${pkgs[*]}" ]]; then + sudo "$pacmanbin" "${pacmanarg[@]}" "${pacopts[@]}" else - ClassifyPkgs ${pkgs[@]} + ClassifyPkgs "${pkgs[@]}" fi - [[ -n "${repopkgs[@]}" ]] && sudo $pacmanbin ${pacmanarg[@]} ${pacopts[@]} ${repopkgs[@]} - if [[ -n "${aurpkgs[@]}" ]]; then - [[ $refresh ]] && [[ -z "${repopkgs[@]}" ]] && sudo $pacmanbin -Sy ${pacopts[@]} - if [[ $fallback = true && ! $aur ]]; then + [[ "${repopkgs[*]}" ]] && sudo "$pacmanbin" "${pacmanarg[@]}" "${pacopts[@]}" "${repopkgs[@]}" + if [[ "${aurpkgs[*]}" ]]; then + [[ "$refresh" ]] && [[ ! "${repopkgs[*]}" ]] && sudo "$pacmanbin" -Sy "${pacopts[@]}" + if [[ "$fallback" = true && ! "$aur" ]]; then Note "w" $"Package(s) ${colorW}${aurpkgs[*]}${reset} not found in repositories, trying ${colorM}AUR${reset}..." fi Core @@ -1980,12 +1977,12 @@ case $operation in exit;; upgrades) CheckUpdates "${pkgs[@]}";; # upgrades (-Qu) handling *) # others operations handling - if [[ -n "$(grep -e "-[F]" <<< ${pacmanarg[@]})" && -n "$(grep -e "-[y]" <<< ${pacmanarg[@]})" ]]; then - sudo $pacmanbin ${pacmanarg[@]} ${pacopts[@]} "${pkgs[@]}" - elif [[ -z "${pkgs[@]}" || -n "$(grep -e "-[DFQTglp]" <<< ${pacmanarg[@]})" ]] && [[ ! " ${pacopts[@]} " =~ --(asdeps|asexplicit) ]]; then - $pacmanbin ${pacmanarg[@]} ${pacopts[@]} "${pkgs[@]}" + if grep -qe "-[F]" <<< "${pacmanarg[@]}" && grep -qe "-[y]" <<< "${pacmanarg[@]}"; then + sudo "$pacmanbin" "${pacmanarg[@]}" "${pacopts[@]}" "${pkgs[@]}" + elif [[ ! "${pkgs[*]}" ]] || grep -qe "-[DFQTglp]" <<< "${pacmanarg[@]}" && [[ ! "${pacopts[*]}" =~ --(asdeps|asexplicit) ]]; then + "$pacmanbin" "${pacmanarg[@]}" "${pacopts[@]}" "${pkgs[@]}" else - sudo $pacmanbin ${pacmanarg[@]} ${pacopts[@]} "${pkgs[@]}" + sudo "$pacmanbin" "${pacmanarg[@]}" "${pacopts[@]}" "${pkgs[@]}" fi exit;; esac |