cluc
v1.0.45
Published
command line under control
Downloads
56
Readme
Cluc
Command line under control, a library to ease usage of command lines.
Demo
with child_process
var Cluc = require('cluc');
new Cluc()
.exec('ls -alh' , function(err,stdout,stderr){
this.confirm(/vagrant/, 'Username should display on unix.');
this.warn(/root/, 'Some files does not belong vagrant users.').or(function(err){
return new Error(err);
});
})
.stream('ls -alh' , function(err,stdout,stderr){
this.confirm(/vagrant/, 'Username should display on unix.');
this.warn(/root/, 'Some files does not belong vagrant users.');
}).stream('sudo apt-get remove apache2 -y', function(){
this.progress(/Reading (:<title>[\w\s]+)[ .]*(:<current>\d+)%/);
this.mustnot(/0 to remove/, 'no package to remove found');
this.confirm(/([1-9]+) to remove/, ' found %s package to remove');
this.success(/(Removing [^ ]+\s+[.]+)/i, 'Package removed !');
this.warn(/(Unable to locate package )/i, 'Package not found');
}).stream('sudo apt-get install apache2 -y', function(){
this.mustnot(/You should explicitly select one to install/, "too many results");
this.mustnot(/has no installation candidate/, "can not install httpd");
this.watch(/Need to get ([0-9- ,-]+ [a-z]+) of archives/i);
this.watch(/After this operation, ([0-9- ,-]+ [a-z]+) of additional disk space will be used/i);
this.spin(/((Reading|Building).+)/i);
this.spin(/^\s*([0-9]+%)/i);
this.warn(/(is already the newest version)/i, 'Already installed');
this.warn(/(0 newly installed)/i, 'Package not installed');
this.confirm(/([^ /]+)\.deb/i);
this.success(/(1 newly installed)/i, 'Package installed !');
//this.redo(2);
//this.display();
}).download('/home/vagrant/test', __dirname+'/fixtures/test.bashrc', function(err){
if(err) log.error(err);
}).record(require('fs').createWriteStream('some/output.log'))
.run( new Cluc.transports.process(), function(){
console.log('done');
});
with ssh
var Cluc = require('cluc');
new Cluc()
.exec('ls -alh' , function(err,stdout,stderr){
this.confirm(/vagrant/, 'Username should display on unix.');
this.warn(/root/, 'Some files does not belong vagrant users.');
this.display();
})
.stream('ls -alh' , function(err,stdout,stderr){
this.confirm(/vagrant/, 'Username should display on unix.');
this.warn(/root/, 'Some files does not belong vagrant users.');
})
.run( new Cluc.transports.ssh(server), function(){
console.log('done');
});
API
Cluc
Cluc.transports
Cluc.output
Cluc.rules
Cluc.rules.must
Cluc.rules.success
Cluc.rules.mustnot
Cluc.rules.confirm
Cluc.rules.warn
Cluc.rules.watch
Cluc.rules.answer
Cluc.rules.display
ClucChildProcess
ClucContext
ClucContext.init
ClucContext.pushRule
ClucContext.must
ClucContext.success
ClucContext.confirm
ClucContext.mustnot
ClucContext.warn
ClucContext.watch
ClucContext.answer
ClucContext.display
ClucContext.redo
ClucSsh
ClucSSHContext
ClucSSHContext.init
ClucSSHContext.pushRule
ClucSSHContext.is
ClucSSHContext.must
ClucSSHContext.success
ClucSSHContext.confirm
ClucSSHContext.mustnot
ClucSSHContext.warn
ClucSSHContext.watch
ClucSSHContext.answer
ClucSSHContext.display
ClucSSHContext.redo
ClucRule
ClucMust
ClucSuccess
ClucMustNot
ClucConfirm
ClucWarn
ClucWatch
ClucAnswer
ClucDisplay
Status
In development. It needs some tests. It misses putFile and readDir implementations. Documentation update.