move sudo for upgrades into script and call script as user

This commit is contained in:
lucas committed 2026-10-12 10:06:37 +00:00
1 parent 2f3a763054
commit 4c299c5a38
2 files changed
+37 -63

No files matched your search

+36 -62
View File
@@ -55,7 +55,6 @@ EOF
}
home_dir="/home/lucas"
venv_dir="${home_dir}/tools/spotdl_venv"
green="\e[32m"
red="\e[31m"
@@ -161,7 +160,7 @@ for ((i=0; i<${#CMD[@]}; i++)); do
printf "Running: %s\n" "${CMD[$i]}"
if eval "${CMD[$i]}"; then
if eval "sudo ${CMD[$i]}"; then
write_out "${MSG[$i]} [${green}OK${norm}]"
else
write_out "${MSG[$i]} [${red}FAIL${norm}]"
@@ -177,7 +176,7 @@ if command -v flatpak >/dev/null 2>&1; then
echo "Starting Flatpak Update..."
flatpak update -y --noninteractive
sudo flatpak update -y --noninteractive
ret=$?
@@ -196,69 +195,44 @@ echo "Finished Package Update"
# SpotDL Virtual Environment
###############################################################################
if [[ ! -d "$venv_dir" ]] && [[ "$1" == "--create-venv" ]]; then
echo "Creating SpotDL virtual environment"
PACKAGES=(
yt-dlp
spotdl
)
mkdir -p "${home_dir}/tools"
python3 -m venv "$venv_dir"
# Install pipx if missing
if ! command -v pipx >/dev/null 2>&1; then
echo "Installing pipx..."
sudo apt update
sudo apt install -y pipx
pipx ensurepath
fi
if [[ -d "$venv_dir" ]]; then
if [[ ! -x "${venv_dir}/bin/pip3" ]]; then
echo "Installing pip"
"${venv_dir}/bin/python" -m ensurepip --upgrade
# Check ffmpeg
if ! command -v ffmpeg >/dev/null 2>&1; then
echo "Installing ffmpeg..."
sudo apt install -y ffmpeg
fi
# Install or update packages
for pkg in "${PACKAGES[@]}"; do
if pipx list --short 2>/dev/null | grep -qx "$pkg"; then
echo "Updating $pkg..."
pipx upgrade "$pkg"
else
echo "Installing $pkg..."
pipx install "$pkg"
fi
echo "Updating venv tooling"
"${venv_dir}/bin/pip3" install --upgrade \
pip \
setuptools \
wheel
###############################################################################
# Ensure required packages exist
###############################################################################
mkdir -p "${home_dir}/.local/bin"
packages=(
spotdl
yt-dlp
youtube-dl
)
for package in "${packages[@]}"; do
echo "Checking package: ${package}"
if ! "${venv_dir}/bin/pip3" show "$package" >/dev/null 2>&1; then
echo "Installing ${package}"
"${venv_dir}/bin/pip3" install "$package"
else
echo "Updating ${package}"
"${venv_dir}/bin/pip3" install --upgrade "$package"
fi
if [[ -x "${venv_dir}/bin/${bin}" ]]; then
ln -sf "${venv_dir}/bin/${package}" "${home_dir}/.local/bin/${package}"
fi
if [[ $? -eq 0 ]]; then
write_out "${package} [${green}OK${norm}]"
else
write_out "${package} [${red}FAIL${norm}]"
fi
done
done
# Install Deno for spotdl if missing
if ! command -v deno >/dev/null 2>&1; then
echo "Installing Deno..."
curl -fsSL https://deno.land/install.sh | sh
# Add to PATH for current shell
export PATH="$HOME/.deno/bin:$PATH"
fi
###############################################################################