2011-08-05 3 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를-도구를 사용하여 리눅스 시스템에 대한 업데이트는 내가 모두 리눅스와 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 %'%를 사용하여 편집중인 현재 파일 이름으로 확장 할 수 있습니다. 한 줄에 저장하고 실행하려면 -': w | ! jsdoc %' – arunkumar

답변

3

파일 시스템에서 변경 사항을 감시하는 INotify이라는 Linux 커널 기능이 있습니다. 이것은 여러 시스템 API로 공개됩니다.

스크립팅의 경우 알림 시스템에 대한 스크립팅 액세스를 제공하는 inotify-tools 패키지가 있습니다.

+0

대단한 답변 - 리눅스에 대해서는 잘 작동하지만 OSX에 대해서도 언급하는 것을 잊어 버렸고 inotify-tools는 OSX에 설치할 수 없다. (지금까지 내가 읽을 수있는 한) –

+0

빠른 웹 검색은 OSX 용 kqueue/kevent –

+0

을 살펴볼 것을 제안합니다. [watchdog] (https://github.com/gorakhargosh/watchdog)도 참조하십시오. – amirnissim

관련 문제