2011-08-05 47 views
1

我想讓jsdoc在保存我的javascript文件時自動生成。我有一個工作腳本,用於存儲文件的最後更新時間(當前是硬編碼的),並與該文件的當前時間戳進行比較。我在一個按下CTRL-C的while循環中運行它,並插入0.1秒的睡眠來停止處理器被佔用。linux(和OSX)shell命令在每次保存文件時執行

這是工作腳本:

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機器應該工作

#!/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 

不過,我想這對Linux和OSX外殼的工作,這樣我就可以在這兩種環境中使用

+2

只是一個建議,你爲什麼不把它編碼到你的編輯器 - vi/emacs?創建一個保存文件並運行jsdoc的宏。在vi中,您可以使用':!jsdoc%'%展開爲當前正在編輯的文件的名稱。保存並在一行中運行 - ':w | !jsdoc%' – arunkumar

回答

3

有一個名爲INotify的Linux內核功能,用於監視文件系統是否有任何更改。它被公開爲多個系統API。

對於腳本編制,有一個名爲inotify-tools的程序包,它可以通過腳本訪問通知系統。

+0

偉大的答案 - 對於Linux這是工作得很好,但我忘了提及我需要的OSX也inotify工具不能安裝在OSX上(據我一直能夠讀取) –

+0

快速網頁搜索建議尋找kqueue/kevent –

+0

for OSX,另請參閱[watchdog](https://github.com/gorakhargosh/watchdog) – amirnissim