Lollipop installer for linux
This commit is contained in:
parent
de9fd9e6fe
commit
78932cc6ac
1 changed files with 255 additions and 0 deletions
255
install.sh
Normal file
255
install.sh
Normal file
|
@ -0,0 +1,255 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
platform=$(uname -ms)
|
||||
|
||||
# Reset
|
||||
Color_Off=''
|
||||
|
||||
# Regular Colors
|
||||
Red=''
|
||||
Green=''
|
||||
Dim='' # White
|
||||
|
||||
# Bold
|
||||
Bold_White=''
|
||||
Bold_Green=''
|
||||
|
||||
if [[ -t 1 ]]; then
|
||||
# Reset
|
||||
Color_Off='\033[0m' # Text Reset
|
||||
|
||||
# Regular Colors
|
||||
Red='\033[0;31m' # Red
|
||||
Green='\033[0;32m' # Green
|
||||
Dim='\033[0;2m' # White
|
||||
|
||||
# Bold
|
||||
Bold_Green='\033[1;32m' # Bold Green
|
||||
Bold_White='\033[1m' # Bold White
|
||||
fi
|
||||
|
||||
error() {
|
||||
echo -e "${Red}error${Color_Off}:" "$@" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
info() {
|
||||
echo -e "${Dim}$@ ${Color_Off}"
|
||||
}
|
||||
|
||||
info_bold() {
|
||||
echo -e "${Bold_White}$@ ${Color_Off}"
|
||||
}
|
||||
|
||||
success() {
|
||||
echo -e "${Green}$@ ${Color_Off}"
|
||||
}
|
||||
|
||||
command -v ffmpeg >/dev/null ||
|
||||
error 'ffmpeg is required to install lollipop'
|
||||
|
||||
case $platform in
|
||||
'Darwin x86_64')
|
||||
target=macos-x64
|
||||
;;
|
||||
'Darwin arm64')
|
||||
target=macos-arm64
|
||||
;;
|
||||
'Linux arm64')
|
||||
target=linux-arm64
|
||||
;;
|
||||
'Linux x86_64' | *)
|
||||
target=linux-x64
|
||||
;;
|
||||
esac
|
||||
|
||||
GITHUB=${GITHUB-"https://github.com"}
|
||||
|
||||
github_repo="$GITHUB/sudospaes/lollipop"
|
||||
|
||||
exe_name=lollipop
|
||||
|
||||
lollipop_uri=$github_repo/releases/latest/download/$exe_name-$target
|
||||
|
||||
install_env=LOLLIPOP_INSTALL
|
||||
bin_env=\$$install_env
|
||||
|
||||
install_dir=${!install_env:-$HOME/.lollipop}
|
||||
bin_dir=$install_dir
|
||||
exe=$bin_dir/lollipop
|
||||
|
||||
if [[ ! -d $bin_dir ]]; then
|
||||
mkdir -p "$bin_dir" ||
|
||||
error "Failed to create install directory \"$bin_dir\""
|
||||
fi
|
||||
|
||||
curl --fail --location --progress-bar --output "$exe" "$lollipop_uri" ||
|
||||
error "Failed to download lollipop from \"$lollipop_uri\""
|
||||
|
||||
chmod +x "$exe" ||
|
||||
error 'Failed to set permissions on lollipop executable'
|
||||
|
||||
tildify() {
|
||||
if [[ $1 = $HOME/* ]]; then
|
||||
local replacement=\~/
|
||||
|
||||
echo "${1/$HOME\//$replacement}"
|
||||
else
|
||||
echo "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
success "$exe_name was installed successfully to $Bold_Green$(tildify "$exe")"
|
||||
|
||||
if command -v lollipop >/dev/null; then
|
||||
# Install completions, but we don't care if it fails
|
||||
IS_LOLLIPOP_AUTO_UPDATE=true $exe completions &>/dev/null || :
|
||||
|
||||
echo "Run '$exe_name' to get started"
|
||||
exit
|
||||
fi
|
||||
|
||||
refresh_command=''
|
||||
|
||||
tilde_bin_dir=$(tildify "$bin_dir")
|
||||
quoted_install_dir=\"${install_dir//\"/\\\"}\"
|
||||
|
||||
if [[ $quoted_install_dir = \"$HOME/* ]]; then
|
||||
quoted_install_dir=${quoted_install_dir/$HOME\//\$HOME/}
|
||||
fi
|
||||
|
||||
echo
|
||||
|
||||
case $(basename "$SHELL") in
|
||||
fish)
|
||||
# Install completions, but we don't care if it fails
|
||||
IS_LOLLIPOP_AUTO_UPDATE=true SHELL=fish $exe completions &>/dev/null || :
|
||||
|
||||
commands=(
|
||||
"set --export $install_env $quoted_install_dir"
|
||||
"set --export PATH $bin_env \$PATH"
|
||||
)
|
||||
|
||||
fish_config=$HOME/.config/fish/config.fish
|
||||
tilde_fish_config=$(tildify "$fish_config")
|
||||
|
||||
if [[ -w $fish_config ]]; then
|
||||
{
|
||||
echo -e '\n# lollipop'
|
||||
|
||||
for command in "${commands[@]}"; do
|
||||
echo "$command"
|
||||
done
|
||||
} >>"$fish_config"
|
||||
|
||||
info "Added \"$tilde_bin_dir\" to \$PATH in \"$tilde_fish_config\""
|
||||
|
||||
refresh_command="source $tilde_fish_config"
|
||||
else
|
||||
echo "Manually add the directory to $tilde_fish_config (or similar):"
|
||||
|
||||
for command in "${commands[@]}"; do
|
||||
info_bold " $command"
|
||||
done
|
||||
fi
|
||||
;;
|
||||
zsh)
|
||||
# Install completions, but we don't care if it fails
|
||||
IS_LOLLIPOP_AUTO_UPDATE=true SHELL=zsh $exe completions &>/dev/null || :
|
||||
|
||||
commands=(
|
||||
"export $install_env=$quoted_install_dir"
|
||||
"export PATH=\"$bin_env:\$PATH\""
|
||||
)
|
||||
|
||||
zsh_config=$HOME/.zshrc
|
||||
tilde_zsh_config=$(tildify "$zsh_config")
|
||||
|
||||
if [[ -w $zsh_config ]]; then
|
||||
{
|
||||
echo -e '\n# lollipop'
|
||||
|
||||
for command in "${commands[@]}"; do
|
||||
echo "$command"
|
||||
done
|
||||
} >>"$zsh_config"
|
||||
|
||||
info "Added \"$tilde_bin_dir\" to \$PATH in \"$tilde_zsh_config\""
|
||||
|
||||
refresh_command="exec $SHELL"
|
||||
else
|
||||
echo "Manually add the directory to $tilde_zsh_config (or similar):"
|
||||
|
||||
for command in "${commands[@]}"; do
|
||||
info_bold " $command"
|
||||
done
|
||||
fi
|
||||
;;
|
||||
bash)
|
||||
# Install completions, but we don't care if it fails
|
||||
IS_LOLLIPOP_AUTO_UPDATE=true SHELL=bash $exe completions &>/dev/null || :
|
||||
|
||||
commands=(
|
||||
"export $install_env=$quoted_install_dir"
|
||||
"export PATH=$bin_env:\$PATH"
|
||||
)
|
||||
|
||||
bash_configs=(
|
||||
"$HOME/.bashrc"
|
||||
"$HOME/.bash_profile"
|
||||
)
|
||||
|
||||
if [[ ${XDG_CONFIG_HOME:-} ]]; then
|
||||
bash_configs+=(
|
||||
"$XDG_CONFIG_HOME/.bash_profile"
|
||||
"$XDG_CONFIG_HOME/.bashrc"
|
||||
"$XDG_CONFIG_HOME/bash_profile"
|
||||
"$XDG_CONFIG_HOME/bashrc"
|
||||
)
|
||||
fi
|
||||
|
||||
set_manually=true
|
||||
for bash_config in "${bash_configs[@]}"; do
|
||||
tilde_bash_config=$(tildify "$bash_config")
|
||||
|
||||
if [[ -w $bash_config ]]; then
|
||||
{
|
||||
echo -e '\n# lollipop'
|
||||
|
||||
for command in "${commands[@]}"; do
|
||||
echo "$command"
|
||||
done
|
||||
} >>"$bash_config"
|
||||
|
||||
info "Added \"$tilde_bin_dir\" to \$PATH in \"$tilde_bash_config\""
|
||||
|
||||
refresh_command="source $bash_config"
|
||||
set_manually=false
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $set_manually = true ]]; then
|
||||
echo "Manually add the directory to $tilde_bash_config (or similar):"
|
||||
|
||||
for command in "${commands[@]}"; do
|
||||
info_bold " $command"
|
||||
done
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo 'Manually add the directory to ~/.bashrc (or similar):'
|
||||
info_bold " export $install_env=$quoted_install_dir"
|
||||
info_bold " export PATH=\"$bin_env:\$PATH\""
|
||||
;;
|
||||
esac
|
||||
|
||||
echo
|
||||
info "To get started, run:"
|
||||
echo
|
||||
|
||||
if [[ $refresh_command ]]; then
|
||||
info_bold " $refresh_command"
|
||||
fi
|
||||
|
||||
info_bold " lollipop"
|
Loading…
Add table
Add a link
Reference in a new issue