#!/usr/bin/env sh
set -eu

# Downloads a tarball from https://tritium.legal/static/releases/ and unpacks it
# into ~/.local/. This file should be unix with `:set fileformat=unix`

# thanks to the Zed team (https://zed.dev) for the original script.

main() {
    platform="$(uname -s)"
    arch="$(uname -m)"
    # Use TMPDIR if available (for environments with non-standard temp directories)
    if [ -n "${TMPDIR:-}" ] && [ -d "${TMPDIR}" ]; then
        temp="$(mktemp -d "$TMPDIR/tritium-XXXXXX")"
    else
        temp="$(mktemp -d "/tmp/tritium-XXXXXX")"
    fi

    if [ "$platform" = "Linux" ]; then
        platform="linux"
    else
        echo "Unsupported platform $platform"
        exit 1
    fi

    case "$platform-$arch" in
        #linux-arm64* | linux-armhf | linux-aarch64)
        #    arch="arm64"
        #    ;;
        linux-x86* | linux-i686*)
            arch="x64"
            ;;
        *)
            echo "Unsupported platform or architecture"
            exit 1
            ;;
    esac

    if command -v curl >/dev/null 2>&1; then
        curl () {
            command curl -fL "$@"
        }
    elif command -v wget >/dev/null 2>&1; then
        curl () {
            wget -O- "$@"
        }
    else
        echo "Could not find 'curl' or 'wget' in your path"
        exit 1
    fi

    "$platform" "$@"

    if [ "$(command -v tritium)" = "$HOME/.local/bin/tritium" ]; then
        echo "Tritium has been installed. Run with 'tritium'"
    else
        echo "To run Tritium from your terminal, you must add ~/.local/bin to your PATH"
        echo "Run:"

        case "$SHELL" in
            *zsh)
                echo "   echo 'export PATH=\$HOME/.local/bin:\$PATH' >> ~/.zshrc"
                echo "   source ~/.zshrc"
                ;;
            *fish)
                echo "   fish_add_path -U $HOME/.local/bin"
                ;;
            *)
                echo "   echo 'export PATH=\$HOME/.local/bin:\$PATH' >> ~/.bashrc"
                echo "   source ~/.bashrc"
                ;;
        esac

        echo "To run Tritium now, '~/.local/bin/tritium'"
    fi
}

linux() {
    if [ -n "${TRITIUM_BUNDLE_PATH:-}" ]; then
        cp "$TRITIUM_BUNDLE_PATH" "$temp/tritium-linux-$arch.tgz"
    else
        echo "Downloading Tritium..."
        curl "https://tritium.legal/static/tritium-linux-$arch.tgz" > "$temp/tritium-linux-$arch.tgz"
    fi

    # Unpack
    mkdir -p "$HOME/.local/tritium"
    tar -xzf "$temp/tritium-linux-$arch.tgz" -C "$HOME/.local/tritium/"
    # Setup ~/.local directories
    mkdir -p "$HOME/.local/bin" "$HOME/.local/share/applications"

    # Link the binary
    ln -sf "$HOME/.local/tritium/tritium" "$HOME/.local/bin/tritium"
}

main "$@"
