最新のJOSMを使う

OpenStreetMapの地図編集にJOSMを利用している人は多いと思いますが、開発版を使っていると活発に更新されているので最新版の更新が面倒です。

ということで開発版の更新をチェックして、更新されていればダウンロードして起動するシェルスクリプトを書きました。

説明

josm-latest
josm-latest -h
josm-latest -o
josm-latest -s
JOSM開発版の更新をチェック。更新されていればダウンロードしてからJOSMを起動します。
''-h'' 使用方法のメッセージを出力します。
''-o'' 保存している一つ前のバージョンのJOSMを起動します。
''-s''  最新版の更新チェックを無視してJOSMを起動します。
~/.config/josm-latest.conf
JOSM="josm-latest.jar"
JOSM_URI="http://josm.openstreetmap.de/\${JOSM}"
JOSM_DOWNLOAD_HOME="\${HOME}/bin"
JOSM_LATEST=0
JOSM_LATEST_URI="http://josm.openstreetmap.de/latest"
TIMEOUT=5

スクリプト

josm-latest
#!/bin/bash
#
# josm-latest
#  
#  Copyright 2012 Jun NOGATA <nogajun@gmail.com>
#  
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#  
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#  
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#  MA 02110-1301, USA.
 
set -e
 
CONF="josm-latest.conf"
CONF_DIR="${HOME}/.config"
 
# ヘルプ
Usage(){
    cat <<EOF
josm-latest, version 0.0
Usage:	josm-latest [option]
 
Options:
	-h	help
	-o	start old version
	-s	skip check latest JOSM
 
EOF
}
 
# 設定ファイルのチェック
Check_conf(){
if [ ! -e "${CONF_DIR}/${CONF}" ]
then
 
# 設定ファイルを作る
 
# ディレクトリ作る
    if [ -d "${CONF_DIR}" ]
    then
        mkdir -p ${CONF_DIR}
    fi
 
# 設定ファイルを作る
 
    cat <<EOF > "${CONF_DIR}/${CONF}"
JOSM="josm-latest.jar"
JOSM_URI="http://josm.openstreetmap.de/\${JOSM}"
JOSM_DOWNLOAD_HOME="\${HOME}/bin"
JOSM_LATEST=0
JOSM_LATEST_URI="http://josm.openstreetmap.de/latest"
TIMEOUT=5
EOF
fi
 
# 設定ファイル読み込み
source "${CONF_DIR}/${CONF}"
 
return 0
}
 
# JOSMの更新チェック
 
Check_latest(){
echo "Checking Latest JOSM..."
LATEST=$(curl -s -L --progress-bar --connect-timeout ${TIMEOUT} ${JOSM_LATEST_URI})
 
if [ ${JOSM_LATEST} -lt ${LATEST} ]
then
    echo "Found New JOSM."
 
    # バックアップ削除
    [ -e "${JOSM_DOWNLOAD_HOME}/${JOSM}.old" ] && rm -f ${JOSM_DOWNLOAD_HOME}/${JOSM}.old
 
    # 現状のファイルをバックアップ
    [ -e "${JOSM_DOWNLOAD_HOME}/${JOSM}" ] && mv ${JOSM_DOWNLOAD_HOME}/${JOSM} ${JOSM_DOWNLOAD_HOME}/${JOSM}.old
 
    # 新しいJOSMをダウンロード
    curl -L --progress-bar --connect-timeout ${TIMEOUT} -o ${JOSM_DOWNLOAD_HOME}/${JOSM} ${JOSM_URI}
 
    # 設定ファイルにバージョンを書き込み
    sed -i -e "s/^JOSM_LATEST=.*$/JOSM_LATEST=${LATEST}/" ${CONF_DIR}/${CONF}
 
else
    echo "Not found new JOSM"
fi
 
return 0
}
 
 
# josm 起動
 
case $1 in
    -h)
        Usage
        exit 0
        ;;
    -o)
	Check_conf
	/usr/bin/java -jar ${JOSM_DOWNLOAD_HOME}/${JOSM}.old
	;;
    -s)
        Check_conf
	/usr/bin/java -jar ${JOSM_DOWNLOAD_HOME}/${JOSM}	
        ;;
    *)
        Check_conf
        Check_latest
	/usr/bin/java -jar ${JOSM_DOWNLOAD_HOME}/${JOSM}
        ;;
esac