写了一个简单的升级脚本

先创建一个目录,把升级脚本放在这里。脚本执行完之后,临时文件和之前版本的 writefreely 文件备份也都会在这个目录里。

第一次使用时,先把下面的脚本放到目录中,假设文件名叫做 upgrade.sh。然后执行 ./upgrade.sh <version> <dst_dir> 进行升级。

#!/bin/bash

set -o errexit


SERVICE_NAME="writefreely"
WORKING_DIR="$(cd "$(dirname "$0")"; pwd -P)"
TEMP_DIR="$WORKING_DIR/writefreely_temp"
BAK_DIR="$WORKING_DIR/.bak"


clean() {
    echo "clean"
    rm -fr $TEMP_DIR/*
}


usage() {
    echo "Usage: $(basename -- "$0") <version> <dst_dir>"
}

bak() {
    local dst=$1	
    echo "back up $dst"
    tar czvf $BAK_DIR/writefreely_bak_$(date +%s).tar.gz $dst
}

download() {
    echo "downloading..."
    local version=$1
    rm -f $WORKING_DIR/writefreely_${version}_linux_amd64.tar.gz
    rm -f $WORKING_DIR/writefreely_${version}_linux_amd64.tar.gz*
    wget "https://github.com/writeas/writefreely/releases/download/v${version}/writefreely_${version}_linux_amd64.tar.gz" -O "${WORKING_DIR}/writefreely_${version}_linux_amd64.tar.gz"
}

extract() {
    echo "extracting..."
    local version=$1
    tar xzvf writefreely_${version}_linux_amd64.tar.gz -C "$TEMP_DIR"
}

stop() {
    echo "stop service"
    sudo service $SERVICE_NAME stop
}

start() {
    echo "start service"
    sudo service $SERVICE_NAME start
}

upgrade() {
    local dst=$1
    echo "upgrading..."
    cp -r $TEMP_DIR/* $dst
}

main() {
    if [[ ! $# -eq 2 ]]; then
        usage
        exit -1
    fi
    mkdir -p "$BAK_DIR"
    mkdir -p "$TEMP_DIR"
    clean
    bak $2
    download $1
    extract $1
    stop
    upgrade $2
    start
}

main $@