最新版がNYAOSの更新をするコマンドを修正しました - メモ:wantoraにあります。
最新版がNYAOSをアップデートするスクリプト(NYAOS 3.1.4_0版) - メモ:wantoraにあります。
NYAOS 3.1.3_0のリリース記念(?)にアップデートを自動化するスクリプトを作りました。
今回、NYAOSのバージョンがluaから取得できないので、マニュアルから取得するというあまりスマートでない方法を使っています。NYAOSのパスとバージョンを取得する機能があるといいのですが。
新機能の $Wn は同じ名前のディレクトリがある時に便利ですね。
つかいかた
- まず、 nyaos_path をNYAOSが置いてあるパスに書き換えます。
- NYAOSで update_nyaos とタイプすると、最新版を確認後新しいバージョンであれば更新します。注意! _nyaファイルも上書きされます。
- 実行には wget と unzip が必要なので、無い場合はダウンロードしてPATHを通して下さい。
-- MIT License (http://d.hatena.ne.jp/wantora/20101212/1292141801) local nyaos_path = [[ここにNYAOSのパスを入力]] local nyaos_version do local f = io.open(nyaos_path .. "\\nyaos_en.txt") local version = nil for line in f:lines() do if line == "History" then break end end for line in f:lines() do version = line:match("^([%d._]+) ") if version then break end end f:close() nyaos_version = version end local function wget(url, output) return nyaos.eval('wget -nc --user-agent="" -O "'..output..'" "'..url..'" 2>&-') end local function confirm(message, chars) local key io.write(message) repeat key = nyaos.getkey() until chars:find(key) ~= nil io.write(key.."\n") return key end local function update_nyaos(url, zippath) wget(url, zippath) nyaos.goodbye.update_nyaos = function() nyaos.exec([[%COMSPEC% /c start %COMSPEC% /c "ping localhost -n 2 > nul && unzip -fo "]]..zippath..[[" -d "]]..nyaos_path..[[" && pause"]]) end print("NYAOS終了時に更新します") end function nyaos.command.update_nyaos() local html = wget("http://www.nyaos.org/index.cgi?p=NYAOS+3000", "-") local url, name, version = html:match( '<a href="(/index%.cgi%?p=NYAOS%+3000;f=(nyaos%-(.-)%-win.zip))"') if html == "" or url == nil then print("update_nyaos: ページの取得に失敗しました") return end if version:gsub("[._]", "") > nyaos_version:gsub("[._]", "") then if confirm(nyaos_version.." から "..version.." に更新しますか?(y/n)", "yn") == "y" then update_nyaos("http://www.nyaos.org"..url, nyaos_path.."\\"..name) end return end print("NYAOSは最新版です") end