ether

0.0.9 • Public • Published

Ether

Status

Build Status

Description

Ether is a simple tool to make scaffolding easy, and fun in a programmatic way.

Installation

[sudo] npm i ether

Ether file

Example

'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;

Install the cli

[sudo] npm i -g ether

Use the cli tool, to run scaffolding, to generate new applications.

Use the '--install' option

ether -i etherfile.js

The install option use the etherfile.js or and module installed.

To run make tasks registered in the etherfile use

ether -u [etherfile] -m [task-name]

Global scaffolding

[sudo] npm i -g ether-node-module

and

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.

API

Instance

var app = ether({
  name: 'Example'
});

Instantiation of the scaffolding.

Get and Set

app.get('name');

and

app.set('version', '0.0.1');

Get and Set, modify the context of the instance.

Task

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.

Default tasks

Mkdir
app.run('mkdir', [destiny]);

On the destiny dir, this task create an new directory

Copy

app.run('copy', [source, destiny]);

That task make a copy of an file

Template

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.

Prompt

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.

Download

app.run('download', [url, destiny, callback]);

To make download of an file and put in the project replacing, variables.

Run

app.run('create-app-structure');

This method run tasks previously defined.

Make

app.make('default', function () {
  app.run('create-app-structure');
});

The make method can register a bunch of tasks.

Make run

app.make('default');

And run a bunch of tasks.

Note

[WIP]

Created by Kaique da Silva kaique.developer@gmail.com

Readme

Keywords

Package Sidebar

Install

npm i ether

Weekly Downloads

265

Version

0.0.9

License

ISC

Last publish

Collaborators

  • kaiquewdev