ether
Version:
Simple scaffolding tool.
262 lines (186 loc) • 4.74 kB
Markdown
//travis-ci.org/fth-ship/ether.png?branch=master)](https://travis-ci.org/fth-ship/ether)
Ether is a simple tool to make scaffolding easy, and fun in
a programmatic way.
```
[ ] npm i ether
```
```javascript
'use strict';
var path = require('path');
var ether = require('ether');
var nodeModule = ether({
questions: [{
type: 'input',
name: 'name',
message: 'Whats the name of the module?'
}, {
type: 'input',
name: 'version',
message: 'Whats the version of the module?',
default: '0.0.1'
}, {
type: 'input',
name: 'entryPoint',
message: 'What the entry point of the module?',
default: 'index.js',
}, {
type: 'input',
name: 'author',
message: 'Who is the author of the module?'
}, {
type: '',
name: 'public',
message: 'This module is public?',
default: true
}],
tree: [
['{{name}}'],
['{{name}}/bin'],
['{{name}}/lib'],
['{{name}}/examples'],
['{{name}}/test']
],
});
nodeModule.task('questions', function (doneHandler) {
nodeModule.run('prompt', [nodeModule.get('questions'), doneHandler]);
});
nodeModule.task('build', function () {
var self = this;
self.get('tree').map(function (item) {
self.run('mkdir', item);
});
return self;
});
nodeModule.task('seed', function (cb) {
var self = this;
self
.run('download', [
'https://gist.github.com/kaiquewdev/9087288/raw/b7d70fc5e3aad9e04b6549bc4239f38f1149af5c/ether-package.json',
'./{{name}}/package.json'),
cb
]);
return self;
});
nodeModule.make('default', function () {
var self = this;
function doneHandler() {
nodeModule.run('build');
nodeModule.run('seed', [function () {
console.log('Download was completed and template too.');
}]);
}
nodeModule.run('questions', [doneHandler]);
return self;
});
module.exports = exports = nodeModule;
```
```shell
[ ] npm i -g ether
```
Use the cli tool, to run scaffolding, to generate new applications.
```shell
ether -i etherfile.js
```
The install option use the `etherfile.js` or and module installed.
```shell
ether -u [etherfile] -m [task-name]
```
```shell
[ ] npm i -g ether-node-module
```
and
```shell
ether -i ether-node-module
or
ether -i node_modules/ether-node-module
```
Or using this way to install one scaffolding from npm,
and run this scaffolding app.
```javascript
var app = ether({
name: 'Example'
});
```
Instantiation of the scaffolding.
```javascript
app.get('name');
```
and
```javascript
app.set('version', '0.0.1');
```
Get and Set, modify the context of the instance.
```javascript
app.task('create-app-structure', function () {
app.run('mkdir', ['app/'])
.run('mkdir', ['app/models'])
.run('mkdir', ['app/views'])
.run('mkdir', ['app/controllers']);
});
```
using the `task` method you can create new methods to reuse in the instance,
of the current scaffolding app.
```javascript
app.run('mkdir', [destiny]);
```
On the destiny dir, this task create an new directory
```javascript
app.run('copy', [source, destiny]);
```
That task make a copy of an file
```javascript
app.run('template', [source, destiny]);
```
This task make a copy and replace variables
from context of the instance of the scaffolding,
to another new file.
```javascript
app.run('prompt', [[{type:'input', name: 'name', message: 'Whats the name of that application?'}]]);
```
To put variables using the interactive mode in the context of the instance,
use this method.
```javascript
app.run('download', [url, destiny, callback]);
```
To make download of an file and put in the project replacing,
variables.
```javascript
app.run('create-app-structure');
```
This method run tasks previously defined.
```javascript
app.make('default', function () {
app.run('create-app-structure');
});
```
The `make` method can register a bunch of tasks.
```javascript
app.make('default');
```
And run a bunch of tasks.
[ ]
Created by Kaique da Silva <kaique.developer@gmail.com>
[![Build Status](https: