2011-08-05 10 views
1

javascriptファイルを保存するときにjsdocを自動的に生成しようとしています。私はファイル(現在はハードコードされている)の最終更新時刻を保存し、そのファイルの現在のタイムスタンプと比較する作業スクリプトを持っています。 CTRL-Cが押されるまで実行されるwhileループでこれを実行し、プロセッサが消費されるのを止めるために0.1秒のスリープを挿入します。 - だけではないような方法が何であるか、私はより良い方法があると知っているファイルが保存されるたびにlinux(およびOSX)シェルコマンドが実行される

while : 
do 

if [ $((lastTime)) -ne `stat -f %m -t %s javascript.js` ] 
then 
     lastTime=`stat -f %m -t %s javascript.js` 
     # custom jsdoc generating script 
     jsdoc javascript.js 
     echo +++ Run: `date` +++ 
fi 

# stops while loop from consuming a lot of resources 
# and making my fan whirr like he wants the computer to take off 
sleep .1 

done 

この

は、作業スクリプトです。どんな助けもありがたい。

編集:このインストールのinotify-ツールとLinuxマシンの更新は、私は両方のLinuxとOSXのシェル上で動作するようにこのことを伝えたい、

#!/bin/bash 

# with inotify-tools installed... 

# only watches first parameter for modification 
while inotifywait -e modify $1; do 
     echo 
     echo +++ Building JSDocs +++ 
     jsdoc [email protected] 
     echo +++ Last run: `date` +++ 
done 

しかし動作するはずですので、私は両方の環境で使用することができます

+2

ちょっとお勧めしますが、これをエディタ - vi/emacsにコーディングしてみませんか?ファイルを保存し、jsdocを実行するマクロを作成します。 viでは、 ':!jsdoc%'%は編集中の現在のファイルの名前に展開できます。保存して1行で実行する - ':w | !jsdoc% ' – arunkumar

答えて

3

と呼ばれるLinuxカーネル機能があり、ファイルシステムに変更がないかどうか監視します。これは、多くのシステムAPIとして公開されています。

スクリプトの場合、inotify-toolsと呼ばれるパッケージがあり、通知システムへのスクリプティングアクセスを提供します。

+0

素晴らしい答え - これはうまくいっていますが、私はOSXでも必要であることを忘れてしまい、inotify-toolsをOSXにインストールすることはできません(私が読んだ限り)。 –

+0

クイックウェブ検索はkqueue/keventを探していることを示唆しています –

+0

OSXについては、[watchdog](https://github.com/gorakhargosh/watchdog)も参照してください。 – amirnissim

関連する問題