Git Product home page Git Product logo

ether's Introduction

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 [email protected]

ether's People

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ether's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.