ZendFrameworkのライブラリやドキュメントをコマンドラインからダウンロードするバッチファイル2009年06月10日 04時18分31秒

なんとなく作ってみました

いやー、我ながら毎度毎度くだらんと思うんだけど、Zend Frameworkのアーカイブやらドキュメントやらをコマンドラインでダウンロードするバッチを作ってみたり。ソースも載せてますが、こちらからダウンロードもできます。

元々は、ローカルのsvnリポジトリに、ZFの各リリース版を上書き→コミットしてバージョン間の差分を見てみようというくだらない思いつきが発端なんだけども、アーカイブページからちくちくとリンククリックしたりするのが面倒になってきたもので。いや、ダウンローダ使えばいいんだけどね。

バッチは難しいや

ソースはこんな感じ。

@echo off
set VER=%1
set EXT=%2
set KIND=%3
if "%EXT%"=="" goto setext else goto setkind
:setext
set EXT=zip
:setkind
if "%KIND%"=="doc" goto setman
goto setlib
:setman
set KIND=-manual-ja
set MSG=マニュアル
goto dl
:setlib
set KIND=
set MSG=ライブラリ
:dl
@echo Zend Framework %VER% の %MSG% をダウンロードします
wget http://framework.zend.com/releases/ZendFramework-%VER%/ZendFramework-%VER%%KIND%.%EXT%

ファイル名は「zfdl.bat」とか「zfdl.cmd」とか、適当に。

しかしバッチ書き慣れないせいか、えらく時間かかったうえにかなりグダグダしたソースだなぁ。難しいや。

あ、これ実行するには拙作のwget.js(+ラッパーのバッチファイル)が必要です。ラッパー書くのめんどくさい場合は最終行の

wget http:.....
cscript //nologo wget.js http://....
のように直接JS起動にしても大丈夫ですが。

使い方

引数を1~3つとります。

最初の引数はダウンロード対象のZFのバージョンを「x.x.x」形式で指定します。たとえば、ZF1.0.0を対象とする場合は、

zfdl 1.0.0
のように指定します。

第二引数はオプションで、ダウンロードするファイルの拡張子を指定します。指定可能な拡張子は「.tar.gz」または「.zip」の2種類のみで、省略時、または他の拡張子などを指定した場合は「.zip」になります。先頭にピリオドが必要な点に注意。

第三引数もオプションで、これに「doc」と指定するとドキュメントをダウンロードします。省略時または「doc」以外のパラメータを指定した場合はライブラリのアーカイブをダウンロードします。

コマンドのサンプル

例1:1.8.1のライブラリを.zipでダウンロード

zfdl 1.8.1

例2:1.6.2のライブラリを.tar.gzでダウンロード

zfdl 1.6.2 .tar.gz

例3:1.7.8のドキュメントを.tar.gzでダウンロード

zfdl 1.7.8 .tar.gz doc

例4:1.0.0のドキュメントを.zipでダウンロード

zfdl 1.0.0 "" doc
第二引数は二重引用符が2つ重なっているだけです。

forコマンドで連続ダウンロード

まぁ、そんな需要はまずないと思うのですが、forコマンドで指定バージョンを自動的に連続ダウンロードすることもできます。

まず落としたいバージョンを列挙した、以下のような感じのテキストファイルを用意しておきます。

1.0.0
1.0.1
1.0.2
1.0.3
1.0.4
1行に1つのバージョンを記述する形式です。

で、これをforコマンドのタネにします。たとえば上記のファイルを「ver.txt」として、.zipでマニュアルをダウンロードするには

for /f %v in ('type ver.txt') do @zfdl %v .tar.gz doc
のようにします。

バッチファイルそのものにもう少し手を入れれば、ダウンロード済みのファイルは落とさないようにしておいて、勝手に最新版をダウンロードするようにもできるような気もしますが、まぁそんな必要はないか。

追記

あれ?拡張子の先頭のピリオド、いらないじゃん

さらに追記

えと、元々wget.jsの作りからして、ダウンロードする内容をいったんすべてメモリに蓄えるので、ドキュメントのダウンロードに使い方絞ったほうが安全かもしれません(dara-jの環境では1.8.1をzip形式でDLできましたが)。

ついでにいうと、圧縮率考えると、zipよりもtar.gzのほうがお勧めです。