You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
2.8 KiB
110 lines
2.8 KiB
#!/usr/bin/env bash
|
|
|
|
# Copyright © 2023 OpenIM. All rights reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# Include shell font styles and some basic information
|
|
SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
|
OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
|
|
|
|
source "$SCRIPTS_ROOT/style_info.sh"
|
|
|
|
echo -e "${GREEN_PREFIX}=========> Check docker-compose status ${COLOR_SUFFIX} \n"
|
|
|
|
trap 'onCtrlC' INT
|
|
|
|
function onCtrlC() {
|
|
kill -9 "${do_sth_pid}" "${progress_pid}" "${countdown_pid}"
|
|
echo
|
|
echo 'Ctrl+C is captured'
|
|
exit 1
|
|
}
|
|
|
|
cd "$OPENIM_ROOT"
|
|
|
|
if command -v docker-compose &> /dev/null; then
|
|
docker-compose ps
|
|
else
|
|
docker compose ps
|
|
fi
|
|
|
|
progress() {
|
|
local _main_pid="$1"
|
|
local _length=20
|
|
local _ratio=1
|
|
local _colors=("31" "32" "33" "34" "35" "36" "37")
|
|
local _wave=("▁" "▂" "▃" "▄" "▅" "▆" "▇" "█" "▇" "▆" "▅" "▄" "▃" "▂")
|
|
|
|
while pgrep -P "$_main_pid" &> /dev/null; do
|
|
local _mark='>'
|
|
local _progress_bar=
|
|
for ((i = 1; i <= _length; i++)); do
|
|
if ((i > _ratio)); then
|
|
_mark='-'
|
|
fi
|
|
_progress_bar="${_progress_bar}${_mark}"
|
|
done
|
|
|
|
local _color_idx=$((_ratio % ${#_colors[@]}))
|
|
local _color_prefix="\033[${_colors[_color_idx]}m"
|
|
local _reset_suffix="\033[0m"
|
|
|
|
local _wave_idx=$((_ratio % ${#_wave[@]}))
|
|
local _wave_progress=${_wave[_wave_idx]}
|
|
|
|
printf "Progress: ${_color_prefix}${_progress_bar}${_reset_suffix} ${_wave_progress} Countdown: %2ds \r" "$_countdown"
|
|
((_ratio++))
|
|
((_ratio > _length)) && _ratio=1
|
|
sleep 0.1
|
|
done
|
|
}
|
|
|
|
countdown() {
|
|
local _duration="$1"
|
|
|
|
for ((i = _duration; i >= 1; i--)); do
|
|
printf "\rCountdown: %2ds \r" "$i"
|
|
sleep 1
|
|
done
|
|
printf "\rCountdown: %2ds \r" "$_duration"
|
|
}
|
|
|
|
do_sth() {
|
|
echo "++++++++++++++++++++++++"
|
|
progress $$ &
|
|
local _progress_pid=$!
|
|
local _countdown=30
|
|
|
|
countdown "$_countdown" &
|
|
local _countdown_pid=$!
|
|
|
|
sleep 30
|
|
|
|
kill "$_progress_pid" "$_countdown_pid"
|
|
|
|
"${SCRIPTS_ROOT}/check_all.sh"
|
|
echo -e "${PURPLE_PREFIX}=========> Check docker-compose status ${COLOR_SUFFIX} \n"
|
|
}
|
|
|
|
set -e
|
|
|
|
do_sth &
|
|
do_sth_pid=$(jobs -p | tail -1)
|
|
|
|
progress "${do_sth_pid}" &
|
|
progress_pid=$(jobs -p | tail -1)
|
|
|
|
wait "${do_sth_pid}"
|
|
printf "Progress: done \n"
|