mirror of
https://github.com/RGBCube/serenity
synced 2025-05-23 18:25:08 +00:00

The script previously failed early after building `mandoc`, as it failed to switch to the correct directory for the next port. With this change, the script now runs to completion.
113 lines
2.3 KiB
Bash
Executable file
113 lines
2.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
some_failed='false'
|
|
action='build'
|
|
verbose='false'
|
|
failfast='false'
|
|
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
clean*)
|
|
action="$arg"
|
|
;;
|
|
verbose)
|
|
verbose='true'
|
|
;;
|
|
failfast)
|
|
failfast='true'
|
|
;;
|
|
esac
|
|
done
|
|
|
|
some_failed=false
|
|
processed_ports=()
|
|
|
|
log_success() {
|
|
echo -e "\033[1;32m[#]\033[0m $1"
|
|
}
|
|
|
|
log_warn() {
|
|
echo -e "\033[1;33m[!]\033[0m $1"
|
|
}
|
|
|
|
log_info() {
|
|
echo -e "\033[1;36m[*]\033[0m $1"
|
|
}
|
|
|
|
log_process() {
|
|
echo -e "\033[1m[~]\033[0m $1"
|
|
}
|
|
|
|
log_error() {
|
|
echo -e "\033[1;31m[x]\033[0m $1"
|
|
}
|
|
|
|
do_build_port() {
|
|
log_process "Building $port_name"
|
|
if $verbose; then
|
|
./package.sh
|
|
else
|
|
./package.sh &> /dev/null
|
|
fi
|
|
}
|
|
|
|
do_clean_port() {
|
|
log_process "Cleaning $port_name"
|
|
if $verbose; then
|
|
./package.sh "$1"
|
|
else
|
|
./package.sh "$1" &> /dev/null
|
|
fi
|
|
}
|
|
|
|
ports_dir=$(realpath "$(dirname "${BASH_SOURCE[0]}")")
|
|
mapfile -d '' directories < <(find "$ports_dir" -mindepth 1 -maxdepth 1 -type d -print0 | sort -z)
|
|
for port_dir in "${directories[@]}"; do
|
|
port_name="$(basename "$port_dir")"
|
|
if [[ " ${processed_ports[*]} " == *" $port_name "* ]]; then
|
|
log_info "$port_name is already processed"
|
|
continue
|
|
fi
|
|
|
|
if ! cd "$port_dir"; then
|
|
log_error "Can not change directory to '$port_name'"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -x ./package.sh ]]; then
|
|
log_warn "$port_name does not have executable package.sh"
|
|
continue
|
|
fi
|
|
|
|
case "$action" in
|
|
clean*)
|
|
if do_clean_port "$action"; then
|
|
log_success "Cleaned $port_name"
|
|
else
|
|
log_error "Failed cleaning $port_name"
|
|
some_failed='true'
|
|
if $failfast; then
|
|
exit 1
|
|
fi
|
|
fi
|
|
;;
|
|
build)
|
|
if do_build_port; then
|
|
log_success "Built $port_name"
|
|
else
|
|
log_error "Failed building $port_name"
|
|
some_failed='true'
|
|
if $failfast; then
|
|
exit 1
|
|
fi
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
# shellcheck disable=SC2207
|
|
processed_ports+=("$port_name" $(./package.sh showproperty depends))
|
|
done
|
|
|
|
if $some_failed; then
|
|
exit 1
|
|
fi
|