https://github.com/131/cnyks
Command line runner for nodejs
https://github.com/131/cnyks
Last synced: 8 months ago
JSON representation
Command line runner for nodejs
- Host: GitHub
- URL: https://github.com/131/cnyks
- Owner: 131
- License: mit
- Created: 2015-10-06T15:25:36.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2024-02-23T10:59:04.000Z (over 2 years ago)
- Last Synced: 2024-04-23T01:20:47.211Z (about 2 years ago)
- Language: JavaScript
- Homepage:
- Size: 218 KB
- Stars: 4
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[cnyks](https://github.com/131/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**)
[](https://github.com/131/cnyks/actions/workflows/test.yml)
[](https://coveralls.io/github/131/cnyks?branch=master)
[](https://www.npmjs.com/package/cnyks)
[](http://opensource.org/licenses/MIT)
[](https://www.npmjs.com/package/eslint-plugin-ivs)

# 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](https://github.com/substack/node-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](https://github.com/tj/co) ).
# Bundled utilities
* `require('cnyks/ify')` : a browserify plugin
* `require('cnyks/prompt/bool')(prompt, default)` : prompt (using [read]) for a boolean
# TODO
* Get rich or die tryin'
# Credits / related
* [131](https://github.com/131)
* Derived from [yks/clyks](https://github.com/131/yks/blob/master/class/exts/cli/interactive_runner.php)
* [nyks](https://github.com/131/nyks), javascript toolkit, good complementarity
# Buzzword / shoutbox / SEO LOVE
cli, reflection API, commander, cnyks, interactive runner, async/await, co, promise, Promises, yield, "Let's have a beer & talk in Paris"