diff --git a/install.sh b/install.sh index a95fd8884..717e3f808 100755 --- a/install.sh +++ b/install.sh @@ -1,7 +1,8 @@ set -eu APP_NAME="simplex-chat" -TARGET_DIR="$HOME/.local/bin" +BIN_DIR="$HOME/.local/bin" +BIN_PATH="$BIN_DIR/$APP_NAME" PLATFORM="$(uname)" if [ $PLATFORM == "Darwin" ]; then @@ -10,39 +11,88 @@ elif [ $PLATFORM == "Linux" ]; then PLATFORM="ubuntu-20_04-x86-64" else echo "Scripted installation on your platform is not supported." - echo "See compiled binaries in the latest release: https://github.com/simplex-chat/simplex-chat/releases/latest" + echo "See compiled binaries in the latest release: https://github.com/$APP_NAME/$APP_NAME/releases/latest" exit 1 fi -[ ! -d $TARGET_DIR ] && mkdir -p $TARGET_DIR +# / Prepare to upgrade from v0 to v1 + +# Determine path of chat binary +if [[ -n "$(which $APP_NAME)" ]]; then + binary=$(which $APP_NAME) +elif [[ -f "$BIN_PATH" ]]; then + binary=$BIN_PATH +else + binary="" +fi + +# If chat binary not found, check v0 initial migration and offer to abort or continue +if [[ -z $binary ]]; then + agent_db="$HOME/.simplex/simplex.agent.db" + if [[ \ + -f "$agent_db" && \ + $(echo "select * from migrations;" | sqlite3 $agent_db | grep 20210101_initial) \ + ]]; then + echo "Warning: found SimpleX Chat database, the current version is not backwards compatible." + echo "If you continue, the current version will be installed as $APP_NAME with a clean database, the old database will be preserved." + while true; do + read -p "Please choose to (a)bort or (c)ontinue: " yn + case $yn in + [Aa]* ) exit 1 ;; + [Cc]* ) break ;; + * ) echo "Please answer 'a' or 'c'." + esac + done + fi +# If chat binary found, check version and offer to abort or continue, on continue rename chat binary +elif [[ ! $($binary -h | grep v1) ]]; then + echo "Warning: found a previous version of SimpleX Chat, the current version is not backwards compatible." + echo "If you continue, it will be renamed to $APP_NAME-v0, and the new version will be installed as $APP_NAME with a clean database." + while true; do + read -p "Please choose (a)bort or (c)ontinue: " yn + case $yn in + [Aa]* ) exit 1 ;; + [Cc]* ) + binary_v0="$binary-v0" + mv ${binary} ${binary_v0} + echo "Renamed $binary into $binary_v0" + break + ;; + * ) echo "Please answer 'a' or 'c'." + esac + done +fi +# Prepare to upgrade from v0 to v1 / + +[ ! -d $BIN_DIR ] && mkdir -p $BIN_DIR if [ -n "$(command -v curl)" ]; then - curl -L -o $TARGET_DIR/$APP_NAME "https://github.com/$APP_NAME/$APP_NAME/releases/latest/download/$APP_NAME-$PLATFORM" + curl -L -o $BIN_PATH "https://github.com/$APP_NAME/$APP_NAME/releases/latest/download/$APP_NAME-$PLATFORM" elif [ -n "$(command -v wget)" ]; then - wget -O $TARGET_DIR/$APP_NAME "https://github.com/$APP_NAME/$APP_NAME/releases/latest/download/$APP_NAME-$PLATFORM" + wget -O $BIN_PATH "https://github.com/$APP_NAME/$APP_NAME/releases/latest/download/$APP_NAME-$PLATFORM" else - echo "Cannot download simplex-chat - please install curl or wget" + echo "Cannot download $APP_NAME - please install curl or wget" exit 1 fi -chmod +x $TARGET_DIR/$APP_NAME +chmod +x $BIN_PATH echo "$APP_NAME installed sucesfully!" -if [ -z "$(command -v simplex-chat)" ]; then +if [ -z "$(command -v $APP_NAME)" ]; then if [ -n "$($SHELL -c 'echo $ZSH_VERSION')" ]; then SHELL_FILE="$HOME/.zshrc" elif [ -n "$($SHELL -c 'echo $BASH_VERSION')" ]; then SHELL_FILE="$HOME/.bashrc" else - echo "Unknown shell - cannot add simplex-chat folder to PATH" - echo "Please add $TARGET_DIR to PATH variable" - echo "Or you can run simplex-chat via full path: $TARGET_DIR/simplex-chat" + echo "Unknown shell - cannot add $APP_NAME folder to PATH" + echo "Please add $BIN_DIR to PATH variable" + echo "Or you can run $APP_NAME via full path: $BIN_PATH" fi if [ -n "$SHELL_FILE" ]; then - echo "export PATH=\$PATH:$TARGET_DIR" >> $SHELL_FILE - echo "Source your $SHELL_FILE or open a new shell and type simplex-chat to run it" + echo "export PATH=\$PATH:$BIN_DIR" >> $SHELL_FILE + echo "Source your $SHELL_FILE or open a new shell and type $APP_NAME to run it" fi else - echo "Type simplex-chat in your terminal to run it" + echo "Type $APP_NAME in your terminal to run it" fi