diff --git a/build.sh b/scripts/build.sh similarity index 93% rename from build.sh rename to scripts/build.sh index 49f3bfb..807a516 100644 --- a/build.sh +++ b/scripts/build.sh @@ -11,7 +11,7 @@ tag=$1 source ~/miniconda3/etc/profile.d/conda.sh conda activate 310 python -m nuitka --onefile --assume-yes-for-downloads --output-dir=dist --static-libpython=no gofilecli.py -mv dist/dist/gofilecli.bin ./gofilecli +mv dist/gofilecli.bin ./gofilecli mkdir -p GoFileCLI_linux-arm64 mv ./gofilecli GoFileCLI_linux-arm64/ diff --git a/scripts/install.sh b/scripts/install.sh new file mode 100644 index 0000000..1bd5893 --- /dev/null +++ b/scripts/install.sh @@ -0,0 +1,63 @@ +#!/bin/bash +owner="NohamR" +repo="GoFileCLI" +latest_release=$(curl -s https://api.github.com/repos/$owner/$repo/releases/latest) + +tag_name=$(echo "$latest_release" | jq -r '.tag_name') +assets=$(echo "$latest_release" | jq -r '.assets[] | .name') + +echo "Latest release tag: $tag_name" + +OS=$(uname -s | tr '[:upper:]' '[:lower:]') + +if [[ "$OS" == "darwin" ]]; then + OS="osx" +fi + +ARCH=$(uname -m) + +if [[ "$ARCH" == "x86_64" ]]; then + ARCH="x64" +elif [[ "$ARCH" == "aarch64" || "$ARCH" == "arm64" ]]; then + ARCH="arm64" +else + echo "Unsupported architecture: $ARCH" + exit 1 +fi + +expected_file="GoFileCLI_${OS}-${ARCH}_*.tar.gz" + +if [[ "$OS" == "windows" ]]; then + expected_file="GoFileCLI_${OS}-${ARCH}_*.zip" +fi + +selected_asset=$(echo "$assets" | grep -E "^GoFileCLI_${OS}-${ARCH}_.*") + +if [[ -z "$selected_asset" ]]; then + echo "No matching asset found for OS: $OS, Architecture: $ARCH" + exit 1 +fi + +echo "Selected asset: $selected_asset" + +download_url=$(echo "$latest_release" | jq -r --arg name "$selected_asset" '.assets[] | select(.name == $name) | .browser_download_url') + +echo "Downloading $selected_asset from $download_url..." +curl -LO "$download_url" +if [[ ! -f "$selected_asset" ]]; then + echo "Download failed." + exit 1 +fi + +tar -xzf "$selected_asset" +extracted_dir=$(find . -type d -name "GoFileCLI*" | head -n 1) +if [[ -d "$extracted_dir" ]]; then + sudo mv "$extracted_dir/gofilecli" /usr/local/bin/ + chmod +x /usr/local/bin/gofilecli + echo "Installation completed. You can now use 'gofilecli'." +else + echo "Failed to find the extracted directory." + exit 1 +fi + +rm -rf "$selected_asset" "$extracted_dir" \ No newline at end of file diff --git a/scripts/uninstall.sh b/scripts/uninstall.sh new file mode 100644 index 0000000..178d6b0 --- /dev/null +++ b/scripts/uninstall.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +BINARY_NAME="gofilecli" + +BINARY_PATH=$(which $BINARY_NAME) + +if [[ -z "$BINARY_PATH" ]]; then + echo "$BINARY_NAME is not installed or not found in PATH." + exit 1 +fi + +echo "Found $BINARY_NAME at $BINARY_PATH." +read -p "Are you sure you want to uninstall $BINARY_NAME? [y/N]: " confirm + +if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then + echo "Uninstallation cancelled." + exit 0 +fi + +sudo rm -f "$BINARY_PATH" + +if [[ ! -f "$BINARY_PATH" ]]; then + echo "$BINARY_NAME has been successfully uninstalled." +else + echo "Failed to uninstall $BINARY_NAME." + exit 1 +fi + +echo "Checking for any leftover files or directories..." +leftovers=$(find /usr/local/bin -name "$BINARY_NAME" 2>/dev/null) + +if [[ -n "$leftovers" ]]; then + echo "Found leftover files:" + echo "$leftovers" + read -p "Do you want to remove these leftover files? [y/N]: " cleanup_confirm + + if [[ "$cleanup_confirm" == "y" || "$cleanup_confirm" == "Y" ]]; then + sudo rm -rf $leftovers + echo "Leftover files removed." + else + echo "Leftover files not removed." + fi +fi + +echo "Uninstallation complete." \ No newline at end of file