最新 Flex 4 用一発更新ビルドシェルを更新してみた
前のエントリーで Cygwin で Flex SDK を更新・ビルドする方法を書きましたけど、なんか、Flex 4 の SVN 更新処理で失敗することがあるみたい...そして、やっぱりリビジョンが同じ場合はビルド処理は不要だよね、っつうことで一発更新ビルドシェルを更新してみました。
最初はチョチョイでできるかなと、思ってたけど
シェルのコマンドや使い方を調べるのに意外に時間食ったよ orz
「updateFlex」シェル
ダウンロードはこちら「updateFlex.zip」
まぁ、シェルのこと知らないおいらが作ったので、
不細工だったり至らないところもあると思うけど、
要件を満たしてるから OK っつうことで ^_^;
標準出力をファイルにリダイレクトするだけでなく、
画面(コンソール)にも出力したかったんだけど、
そういうのってできないのかなぁ??
あと、「もっと、こうしたらスマートだよ」みたいな
アドバイスがあったら、コメントくださいな (^o^)/
そ・れ・と、
インターネットでシェルスクリプト調べるといろいろ出てくるんだけどさぁ、オプションとかの説明ばっかで、肝心の使い方が分かるサンプル・コードが少ないこと。そして、その説明はどのサイトも同じだったり...(どっかの転記?)
オプションの一個一個にサンプルコードも書いてくれぇ、
って叫びたくなったよ。あと、パイプを絡めたサンプルも
あるとすっげぇ便利なのになぁ、と思った ^_^;
最初はチョチョイでできるかなと、思ってたけど
シェルのコマンドや使い方を調べるのに意外に時間食ったよ orz
「updateFlex」シェル
#!/bin/sh
# Flex SDK HOME
export FLEX_HOME=/cygdrive/f/Softs/Adobe/Flex4/ws/FlexSDK4
cd /
if [ ! -f revision.log ]; then
echo "0" > revision.log
fi
if [ -f svn.log ]; then
rm svn.log
fi
if [ -f svn_error.log ]; then
rm svn_error.log
fi
svn_error=1
while [ $svn_error -eq 1 ];
do
svn up $FLEX_HOME > svn.log 2> svn_error.log
tail -n 1 svn.log | grep revision > svn_tail.log
if [ -s svn_error.log ] || [ ! -s svn_tail.log ]; then
echo svn error
cat svn_error.log
svn_error=1
else
svn_error=0
fi
done
oldRevision=`cat revision.log`
echo "old revision = $oldRevision"
declare -i rpos
rpos=`tail svn_tail.log | awk 'END{print index($0,"revision")}'`+9
newRevision=`tail svn_tail.log | awk -v b="$rpos" 'END{print substr($0,b)}' | sed -e 's/\.//'`
echo "new revision = $newRevision"
if [ "$oldRevision" != "$newRevision" ]; then
echo "Flex SDK was updated!"
echo $newRevision > revision.log
cd $FLEX_HOME
source setup.sh
ant -q main
else
echo "it's a same revision (skip build)"
fi
# Flex SDK HOME
export FLEX_HOME=/cygdrive/f/Softs/Adobe/Flex4/ws/FlexSDK4
cd /
if [ ! -f revision.log ]; then
echo "0" > revision.log
fi
if [ -f svn.log ]; then
rm svn.log
fi
if [ -f svn_error.log ]; then
rm svn_error.log
fi
svn_error=1
while [ $svn_error -eq 1 ];
do
svn up $FLEX_HOME > svn.log 2> svn_error.log
tail -n 1 svn.log | grep revision > svn_tail.log
if [ -s svn_error.log ] || [ ! -s svn_tail.log ]; then
echo svn error
cat svn_error.log
svn_error=1
else
svn_error=0
fi
done
oldRevision=`cat revision.log`
echo "old revision = $oldRevision"
declare -i rpos
rpos=`tail svn_tail.log | awk 'END{print index($0,"revision")}'`+9
newRevision=`tail svn_tail.log | awk -v b="$rpos" 'END{print substr($0,b)}' | sed -e 's/\.//'`
echo "new revision = $newRevision"
if [ "$oldRevision" != "$newRevision" ]; then
echo "Flex SDK was updated!"
echo $newRevision > revision.log
cd $FLEX_HOME
source setup.sh
ant -q main
else
echo "it's a same revision (skip build)"
fi
ダウンロードはこちら「updateFlex.zip」
まぁ、シェルのこと知らないおいらが作ったので、
不細工だったり至らないところもあると思うけど、
要件を満たしてるから OK っつうことで ^_^;
標準出力をファイルにリダイレクトするだけでなく、
画面(コンソール)にも出力したかったんだけど、
そういうのってできないのかなぁ??
あと、「もっと、こうしたらスマートだよ」みたいな
アドバイスがあったら、コメントくださいな (^o^)/
そ・れ・と、
インターネットでシェルスクリプト調べるといろいろ出てくるんだけどさぁ、オプションとかの説明ばっかで、肝心の使い方が分かるサンプル・コードが少ないこと。そして、その説明はどのサイトも同じだったり...(どっかの転記?)
オプションの一個一個にサンプルコードも書いてくれぇ、
って叫びたくなったよ。あと、パイプを絡めたサンプルも
あるとすっげぇ便利なのになぁ、と思った ^_^;
>画面(コンソール)にも出力したかったんだけど、
>そういうのってできないのかなぁ??
UNIXのteeコマンドで如何ですか?