私のnode.jsアプリケーションは、ユーザーが直接実行するコマンドラインアプリケーションです。github リポジトリに電話をかけ、そのローカル バージョンを github リポジトリの master ブランチの最新バージョンと比較することは理にかなっています。バージョンが古い場合は、ユーザーにメッセージを表示します。
では、このフォーン ホームを実現し、バージョンを比較するにはどうすればよいでしょうか。
私のnode.jsアプリケーションは、ユーザーが直接実行するコマンドラインアプリケーションです。github リポジトリに電話をかけ、そのローカル バージョンを github リポジトリの master ブランチの最新バージョンと比較することは理にかなっています。バージョンが古い場合は、ユーザーにメッセージを表示します。
では、このフォーン ホームを実現し、バージョンを比較するにはどうすればよいでしょうか。
これを自分で行うためのソリューションを作成しました。依存関係bal-util (so npm install bal-util
) が必要です。コードは次のとおりです。
packageCompare
関数のソース コードは、https ://github.com/balupton/bal-util/blob/master/src/lib/compare.coffee にあります。
# Prepare
balUtil = require('bal-util')
pathUtil = require('path')
debug = false
# Compare
balUtil.packageCompare({
local: pathUtil.join(__dirname, '..', 'package.json')
remote: 'https://raw.github.com/bevry/docpad/master/package.json'
newVersionCallback: (details) ->
if debug
console.log """
There is a new version of #{details.local.name} available, you should probably upgrade...
current version: #{details.local.version}
new version: #{details.remote.version}
grab it here: #{details.remote.homepage}
"""
else
console.log "There is a new version of #{details.local.name} available"
})
// Prepare
var balUtil, debug, pathUtil;
balUtil = require('bal-util');
pathUtil = require('path');
debug = false;
// Compare
balUtil.packageCompare({
local: pathUtil.join(__dirname, '..', 'package.json'),
remote: 'https://raw.github.com/bevry/docpad/master/package.json',
newVersionCallback: function(details) {
if (debug) {
return console.log("There is a new version of " + details.local.name + " available, you should probably upgrade...\ncurrent version: " + details.local.version + "\nnew version: " + details.remote.version + "\ngrab it here: " + details.remote.homepage);
} else {
return console.log("There is a new version of " + details.local.name + " available");
}
}
});