madiator-docker-runpod/official-templates/better-ai-launcher/download_venv.sh
2024-10-12 14:46:41 +02:00

58 lines
No EOL
2 KiB
Bash

#!/bin/bash
app_name=$1
download_url=$2
workspace_dir="/workspace"
app_dir="${workspace_dir}/${app_name}"
tar_file="${workspace_dir}/${app_name}.tar.gz"
echo "Starting download of ${app_name} venv..."
aria2c -x 16 -s 16 \
--summary-interval=1 \
--download-result=full \
"${download_url}" -d "${workspace_dir}" -o "${app_name}.tar.gz" 2>&1 | \
sed -u 's/^\[#[0-9a-f]\+ \([0-9.]\+[KMGT]\?iB\)\/\([0-9.]\+[KMGT]\?iB\)(\([0-9]\+%\))/Download progress: \1 of \2 (\3)/' | \
sed -u 's/^Download Progress Summary/\nDownload Progress Summary/' | \
sed -u 's/^Download Results:/\nDownload Results:/' | \
sed -u 's/\x1b\[[0-9;]*m//g' # Remove ANSI color codes
if [ $? -eq 0 ] && [ -f "${tar_file}" ]; then
echo "Download completed successfully. Starting extraction..."
echo "Creating directory: ${app_dir}"
mkdir -p "${app_dir}"
echo "Extracting ${tar_file} to ${app_dir}..."
echo "This process may take several minutes. Please be patient."
# Check if pv is available
if command -v pv >/dev/null 2>&1; then
# Use pv to show progress
pv "${tar_file}" | tar -xzf - -C "${app_dir}" 2>&1 | \
while read -r line; do
echo "Extraction progress: $line"
done
else
# Fallback to a more basic method if pv is not available
tar -xzvf "${tar_file}" -C "${app_dir}" | \
while read -r line; do
echo "Extracting: $line"
done
fi
if [ ${PIPESTATUS[0]} -eq 0 ]; then
echo "Extraction completed successfully."
rm "${tar_file}"
echo "Temporary file removed."
echo "Installation of ${app_name} completed successfully."
echo "Please refresh the page to see the changes and start using ${app_name}."
else
echo "Error: Extraction failed."
exit 1
fi
else
echo "Error: Download failed or file not found."
echo "Download URL: ${download_url}"
echo "Target file: ${tar_file}"
ls -l "${workspace_dir}"
exit 1
fi