mirror of
https://github.com/MatsuriDayo/nekoray.git
synced 2025-12-19 22:50:08 +08:00
Nekoray installation script
you can install, upgrade and delete application in linux
This commit is contained in:
parent
727274bdf2
commit
4dc217bd5c
162
docs/install-nekoray.sh
Executable file
162
docs/install-nekoray.sh
Executable file
@ -0,0 +1,162 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
NEKORAY_URL="https://api.github.com/repos/MatsuriDayo/nekoray/releases"
|
||||||
|
NEKORAY_FILE_NAME="NekoRay"
|
||||||
|
NEKORAY_DESKTOPFILE="$HOME/.local/share/applications/nekoray.desktop"
|
||||||
|
WGET_TIMEOUT="15"
|
||||||
|
|
||||||
|
# Colors for terminal output
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# ASCII Banner
|
||||||
|
echo -e "\n${GREEN}NekoRay Installer${NC}\n"
|
||||||
|
|
||||||
|
# Function to check prerequisites
|
||||||
|
check_prerequisites() {
|
||||||
|
if ! command -v unzip &> /dev/null; then
|
||||||
|
echo -e "unzip is not installed.\nInstall unzip in your system.\nFor example: sudo apt install unzip"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if ! command -v wget &> /dev/null; then
|
||||||
|
echo -e "wget is not installed.\nInstall wget in your system.\nFor example: sudo apt install wget"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install NekoRay
|
||||||
|
install_nekoray() {
|
||||||
|
# Fetch available versions
|
||||||
|
echo "Fetching available versions..."
|
||||||
|
VERSIONS=$(wget --timeout=$WGET_TIMEOUT -q -O- $NEKORAY_URL | grep -Eo '"tag_name": "[^"]+' | cut -d '"' -f 4)
|
||||||
|
|
||||||
|
if [ -z "$VERSIONS" ]; then
|
||||||
|
echo "Failed to fetch available versions. Please check your internet connection or the repository URL."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ask user to select a version
|
||||||
|
echo "Available versions:"
|
||||||
|
select VERSION in $VERSIONS; do
|
||||||
|
if [ -n "$VERSION" ]; then
|
||||||
|
echo "You selected version: $VERSION"
|
||||||
|
break
|
||||||
|
else
|
||||||
|
echo "Invalid selection. Please choose a valid version."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Fetch the download URL
|
||||||
|
echo "Fetching download URL for version: $VERSION"
|
||||||
|
DOWNLOAD_URL=$(wget --timeout=$WGET_TIMEOUT -q -O- $NEKORAY_URL |
|
||||||
|
grep -E "browser_download_url" |
|
||||||
|
grep "$VERSION" |
|
||||||
|
grep "linux64" |
|
||||||
|
head -n 1 |
|
||||||
|
cut -d '"' -f 4)
|
||||||
|
|
||||||
|
if [ -z "$DOWNLOAD_URL" ]; then
|
||||||
|
echo "Failed to find download URL for version $VERSION."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Debugging: Print download URL
|
||||||
|
echo "Download URL: $DOWNLOAD_URL"
|
||||||
|
|
||||||
|
# Download the file
|
||||||
|
echo "Downloading NekoRay..."
|
||||||
|
if ! wget --timeout=$WGET_TIMEOUT -q --show-progress --progress=bar:force -O /tmp/nekoray.zip "$DOWNLOAD_URL"; then
|
||||||
|
echo "Failed to download NekoRay from $DOWNLOAD_URL."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Extract the file
|
||||||
|
echo "Extracting NekoRay..."
|
||||||
|
if ! unzip /tmp/nekoray.zip -d "$HOME/$NEKORAY_FILE_NAME"; then
|
||||||
|
echo "Failed to extract the downloaded file."
|
||||||
|
rm /tmp/nekoray.zip
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
rm /tmp/nekoray.zip
|
||||||
|
|
||||||
|
# Check for renamed executable and icon
|
||||||
|
EXECUTABLE_PATH="$HOME/$NEKORAY_FILE_NAME/nekoray/nekoray"
|
||||||
|
ICON_PATH="$HOME/$NEKORAY_FILE_NAME/nekoray/nekoray.png"
|
||||||
|
|
||||||
|
if [ ! -f "$EXECUTABLE_PATH" ]; then
|
||||||
|
EXECUTABLE_PATH="$HOME/$NEKORAY_FILE_NAME/nekoray/nekobox"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$ICON_PATH" ]; then
|
||||||
|
ICON_PATH="$HOME/$NEKORAY_FILE_NAME/nekoray/nekobox.png"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create Desktop icon for current user
|
||||||
|
[ -e "$NEKORAY_DESKTOPFILE" ] && rm "$NEKORAY_DESKTOPFILE"
|
||||||
|
|
||||||
|
echo "Creating desktop entry..."
|
||||||
|
cat <<EOT >> "$NEKORAY_DESKTOPFILE"
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=NekoRay
|
||||||
|
Comment=NekoRay
|
||||||
|
Exec=$EXECUTABLE_PATH
|
||||||
|
Icon=$ICON_PATH
|
||||||
|
Terminal=false
|
||||||
|
StartupWMClass=NekoRay,nekoray,Nekoray,nekoRay
|
||||||
|
Type=Application
|
||||||
|
Categories=Network
|
||||||
|
EOT
|
||||||
|
|
||||||
|
# Set permissions
|
||||||
|
echo "Setting permissions..."
|
||||||
|
chown "$USER:$USER" "$HOME/$NEKORAY_FILE_NAME/" -R
|
||||||
|
chmod +x "$EXECUTABLE_PATH" -R
|
||||||
|
|
||||||
|
echo -e "\nDone! NekoRay version $VERSION installed. Type 'NekoRay' in your desktop search to launch it."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to remove NekoRay
|
||||||
|
remove_nekoray() {
|
||||||
|
if [ -d "$HOME/$NEKORAY_FILE_NAME" ]; then
|
||||||
|
echo "Removing NekoRay..."
|
||||||
|
rm -rf "$HOME/$NEKORAY_FILE_NAME"
|
||||||
|
[ -e "$NEKORAY_DESKTOPFILE" ] && rm "$NEKORAY_DESKTOPFILE"
|
||||||
|
echo "NekoRay has been removed."
|
||||||
|
else
|
||||||
|
echo "NekoRay is not installed."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to upgrade NekoRay
|
||||||
|
upgrade_nekoray() {
|
||||||
|
echo "Upgrading NekoRay..."
|
||||||
|
remove_nekoray
|
||||||
|
install_nekoray
|
||||||
|
}
|
||||||
|
|
||||||
|
# Main menu
|
||||||
|
echo "Choose an option:"
|
||||||
|
echo "1) Install NekoRay"
|
||||||
|
echo "2) Remove NekoRay"
|
||||||
|
echo "3) Upgrade NekoRay"
|
||||||
|
read -rp "Enter your choice: " CHOICE
|
||||||
|
|
||||||
|
case $CHOICE in
|
||||||
|
1)
|
||||||
|
check_prerequisites
|
||||||
|
install_nekoray
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
remove_nekoray
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
check_prerequisites
|
||||||
|
upgrade_nekoray
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Invalid choice. Exiting."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user