Use ${!array[@]} syntax to iterate over arrays.

Bash 3 accepts ${array[@]:0} but this is invalid in bash 4 for empty
arrays. Instead, use ${!array[@]} to get indexes into the array and
look up entries using them.
This commit is contained in:
Simon Howard 2016-06-19 20:46:45 -04:00
parent a5917ce635
commit abb68241a3
2 changed files with 32 additions and 18 deletions

View file

@ -62,9 +62,9 @@ dependencies() {
}
set_dependencies_native() {
local i=0
while [ $i -lt ${#DEPENDENCIES[@]} ]; do
dep="${DEPENDENCIES[$i]}"
local i
for i in ${!DEPENDENCIES[@]}; do
local dep="${DEPENDENCIES[$i]}"
if [[ "$PACKAGE_TYPE" = native ]] && ! [[ "$dep" =~ native: ]]; then
DEPENDENCIES[$i]="native:$dep"
fi
@ -82,8 +82,9 @@ variant() {
# Check if the given variant was declared in the package file.
valid_variant() {
local for_variant=$1
for v in "${ALL_VARIANTS[@]}"; do
local i for_variant=$1
for i in "${!ALL_VARIANTS[@]}"; do
local v="${ALL_VARIANTS[$i]}"
if [ "$v" = "$for_variant" ]; then
return 0
fi
@ -94,8 +95,9 @@ valid_variant() {
# Get the default variant for the specified package. Usually this is the
# stable variant but it can be overridden.
package_default_variant() {
local for_package=$1
for v in "${LATEST_PACKAGES[@]}"; do
local i for_package=$1
for i in "${!LATEST_PACKAGES[@]}"; do
local v="${LATEST_PACKAGES[$i]}"
if [ "$v" = "$for_package" ]; then
echo "latest"
return
@ -142,6 +144,7 @@ configure_for_package() {
if [ "${#ALL_VARIANTS[@]}" -eq 0 ]; then
ALL_VARIANTS=(stable)
fi
if ! valid_variant "$PACKAGE_VARIANT"; then
error_exit "Unknown variant $PACKAGE_VARIANT for package $package."
fi
@ -205,7 +208,9 @@ setup_build_environment() {
}
install_dependencies() {
for dep in "${DEPENDENCIES[@]:0}"; do
local i
for i in "${!DEPENDENCIES[@]}"; do
local dep="${DEPENDENCIES[$i]}"
chocpkg install "$dep"
done
}
@ -216,6 +221,7 @@ cmd_installed() {
}
cmd_fetch() {
check_valid_variant
do_fetch
}
@ -287,8 +293,9 @@ package_info() {
printf "\n"
printf "variants:"
for v in "${ALL_VARIANTS[@]}"; do
printf "%s\n" "$v"
local i
for i in "${!ALL_VARIANTS[@]}"; do
printf "%s\n" "${ALL_VARIANTS[$i]}"
done | sort | uniq | while read v; do
printf " %s" "$v"
done
@ -310,7 +317,9 @@ cmd_info() {
}
cmd_dependencies() {
for dep in "${DEPENDENCIES[@]:0}"; do
local i
for i in "${!DEPENDENCIES[@]}"; do
local dep="${DEPENDENCIES[$i]}"
echo "$dep"
chocpkg dependencies "$dep"
done | sort | uniq

View file

@ -17,20 +17,24 @@ do_build() {
# Installing a package group means installing all its packages; we don't
# trigger the build step like 'install' usually does (we don't have one).
cmd_install() {
for package in "${DEPENDENCIES[@]:0}"; do
chocpkg install "$package"
local i
for i in "${!DEPENDENCIES[@]}"; do
chocpkg install "${DEPENDENCIES[$i]}"
done
}
# Reinstalling a package group means reinstalling *all* its packages.
cmd_reinstall() {
for package in "${DEPENDENCIES[@]:0}"; do
chocpkg reinstall "$package"
local i
for i in "${!DEPENDENCIES[@]}"; do
chocpkg reinstall "${DEPENDENCIES[$i]}"
done
}
cmd_dependencies() {
for package in "${DEPENDENCIES[@]:0}"; do
local i
for i in "${!DEPENDENCIES[@]}"; do
local package="${DEPENDENCIES[$i]}"
echo "$package"
chocpkg dependencies "$package"
done | sort | uniq
@ -38,8 +42,9 @@ cmd_dependencies() {
# Package group is installed if all its packages are installed.
cmd_installed() {
for package in "${DEPENDENCIES[@]:0}"; do
chocpkg installed "$package"
local i
for i in "${!DEPENDENCIES[@]}"; do
chocpkg installed "${DEPENDENCIES[$i]}"
done
}