cnyks is a CLI runner for nodejs modules.
Aka : cnyks any ES6 class and :boom:boom:sparkles: you got the greatest command line runner ever (no fingerprint at all)
Motivation
cnyks
will analyze your class/instance prototype and reflect the API it exposes, hence, any module can be handled by cnyks. There is no API to abide, compose your class the way you like.
Example
"use strict";
var sleep = require('nyks/async/sleep');
module.exports = class {
test(name) {
console.log(name);
}
async hello(name) {
await sleep(1000);
return `Hello ${name}`;
}
static test(){
console.log("Got test");
}
}
Now, just cnyks' it !
cnyks foo.js
Installation/Usage
CLI
npm install -g cnyks
cnyks path/to/your/module.js
# enjoy !
CLI unattended flags / arguments
--ir://
is a "namespace" for all cnyks dedicated arguments--ir://run=method_name
run "method_name" on your module, then quit--ir://start=method_name
run "method_name" on your module, then start the interactive loop--ir://json
(to be used with "run") silence ir helpers, format output as JSON--ir://run=hello --name=bar
run method "hello" with argument name
set to 'bar' (i.e. function hello(name) { }
)--ir://run=hello --name::json='[1,2,3]'
run method "hello" with argument name
set to [1, 2, 3]
(as a javascript array).
Self running, standalone cnyks bundle (via browserify)
Cnyks expose a cnyksify plugin for browserify.
browserify --node entry.js --plugin cnyks/ify > bundle.js
node bundle.js
=> start runner
Standalone bootstrap
Just add this 2 lines footer to your module/class so it can be use by clyks directly
//at the end of your module
module.exports = SomeClass;
if(module.parent === null) //ensure module is called directly, i.e. not required
require('cnyks')(SomeClass); //start runner
Now just node someapp.js
to start cnyks runner.
Legacy ES5 async support
Cnyks also allows you to declare async function through generators (internaly using co ).
Bundled utilities
require('cnyks/ify')
: a browserify pluginrequire('cnyks/prompt/bool')(prompt, default)
: prompt (using [read]) for a boolean
TODO
Credits / related
cli, reflection API, commander, cnyks, interactive runner, async/await, co, promise, Promises, yield, "Let's have a beer & talk in Paris"