node.js 유용한 모듈 (15) - procstreams
원문 링크 -http://www.catonmat.net/blog/nodejs-modules-procstreams/
본 게시글은 원저자의 허락을 얻어 번역한 것입니다.
9회 연재 - redis (redis 클라이언트 라이브러리)
10회 연재 - express (경량의 고속 웹 프레임워크)
12회 연재 - cradle (고수준 CouchDB 클라이언트)
13회 연재 - JSONStream (스트리밍 JSON 파서)
14회 연재 - everyauth (페이스북, 트위터 등의 서비스 인증)
오늘 소개할 모듈은 polotek이라는 닉네임으로 알려진 Marco Rogers가 만든 procstreams 모듈이다. procstreams는 node에서 쉘 스크립팅을 실행하는 아직 실험 단계의 모듈이다.
var $p = require('procstreams');
$p('cat lines.txt').pipe('wc -l')
.data(function(stdout, stderr) {
console.log(stdout); // prints number of lines in the file lines.txt
});
위 예제는 cat lines.txt
쉘 명령어를 실행한 다음, 결과값을 wc -l
명령의 입력으로 전달(pipe) 한다. 그런 다음 콜백 함수를 통해 lines.txt
파일의 라인 수를 출력하게 된다.
다음은 또 다른 예제이다.
var $p = require('procstreams');
$p('mkdir foo')
.and('cp file.txt foo/')
.and('rm file.txt')
.on('exit', function() {
console.log('done');
});
위 예제는 mkdir foo
을 실행하고, 이 명령이 성공하면 cp file.txt foo/
명령을 실행한다. 이 명령이 계속 성공했다면, rm file.txt
명령을 계속 수행한다. 위 코드를 쉘 스크립트로 작성하면 다음과 같을 것이다.
mkdir foo && cp file.txt foo/ && rm file.txt
.and(…)
함수는 쉘 스크립트에서 &&
와 같다.
procstreams는 또한 쉘 스크립트 명령에서 ||
와 유사한 .or(...)
메서드와 ;
와 유사한 .then(...)
메서드를 지원한다.
다음은 예제 코드이다.
var $p = require('procstreams');
$p('mkdir foo')
.then('cp file.txt file2.txt')
.or('echo "failed" > ~/notify')
이 예제는 mkdirs foo
명령을 수행한 다음, file.txt를 file2.txt로 복사한다. 만약 복사가 실패할 경우 "failed" 에러를 ~/notify
파일에 쓴다. 쉘 스크립트로 작성하면 다음과 같을 것이다.
mkdir foo; cp file.txt file2.txt || echo "failed" > ~/notify
procstreams의 전체 기능을 알고 싶다면 Github 사이트상의 procstreams documentation을 살펴봐라.
다음과 같이 npm을 통해 procstreams
를 설치할 수 있다.
npm install procstreams
Procstreams의 GitHub 사이트 : https://github.com/polotek/procstreams.