1.6.0 • Published 8 years ago

terminal-task-runner v1.6.0

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

terminal-task-runner

NPM version

Terminal task execution system

npm.io

Terminal-task-runner is a node UI framework for task execution. Developer can only focus on the task logic. Framework will generate the terminal menu for you.

terminal-task-runner is now used by sero-cli, modou-terminal-controller, fe-interview

High-level overview

terminal-task-runner is runner system with a lovely terminal UI. Which also provide some cool features to ease the way of implementing tasks.

Installation

npm install terminal-task-runner --save

Usage

var TaskRunner = require('terminal-task-runner');

TaskRunner.createMenu({
    title: 'This is Header',
    subtitle: 'here is subTitle'
});

By doing above, you've created a very simple terminal menu as following:

npm.io

How to write your own task

Welcome to play with the example as your skeleton.

API

TaskRunner.createMenu(options)

options

Type: Object

Options to pass to createMenu

options.title

Type: String Default: =====================

The title displayed on the top of the terminal ui.

options.subtitle

Type: String Default: --------------------

The subtitle displayed below the title.

options.helpTxt

Type: String Default: HELP

The text will be displayed if you have set helpFile.

options.exitTxt

Type: String Default: EXIT

The text will be displayed at the bottom of the terminal UI.

options.width

Type: number Default: 100

menu width in columns.

options.x

Type: number Default: 3

top-left corner x offset.

options.y

Type: number Default: 2

top-left corner y offset.

options.taskDir

Type: String

The location of where the tasks placed.

options.taskList

Type: array Optional: true

The the list of task folders. If not specified, task-runner will go through all the folders under taskDir.

options.helpFile

Type: String

The location of where the help file placed. A help file should be written in colors-tmpl style.

options.version

Type: String Default: ''

The version will be displayed at the right of the title.

options.preferenceName

Type: String

The preference file name will be used to store the information. For example: .sero

How to play with PreferenceMgr

options.onFinish

Type: Function

This Function gets called once a task is executed successfully with two parameters id and name

options.onError

Type: Function

This Function gets called once a task is failed with three parameters id, name and error

TaskRunner.Base

Your own task should extend from it.

var Task = TaskRunner.Base.extend({
    id: 'helloTask',
    name: 'This is only a hello world task',
    priority: 1,
    run: function(cons) {
        //Task has to be asynchronous, otherwise, you won't receive the finish/error event
        setTimeout(function() {
            logger.warn('hello, world!!');
            cons();
        });
    }
});

TaskRunner.logger

Print stuff to the terminal instead of the original console.

var logger = TaskRunner.logger;

logger.info('information');          //print in white
logger.success('congratulation');    //print in green
logger.warn('warning');              //print in yellow
logger.error('error');               //print in red

TaskRunner.shell(commands, variables, displayCmdItself)

commands

Type: Array

Commands to pass to new Shell

command

Type: String

The command you'd like to execute. A command can contains variable which will be replaced later before executed by Shell, the varible syntax should apply lodash

variables

Type: Object

The object used to replace the variable in command by using lodash's template engine.

displayCmdItself

Type: Boolean

This option used to determine whether to display the command itself

var Shell = TaskRunner.shell;

new Shell(['ls -l *<%= suffix %>'], {
                suffix: '.js'
    }, true).start().then(function() {
        cons();
    }, function(err) {
        cons(err);
});

TaskRunner.Q

Q as default promise implementation is recommended.

LICENSE

MIT License

1.6.0

8 years ago

1.5.3

9 years ago

1.5.2

9 years ago

1.5.1

9 years ago

1.5.0

9 years ago

1.4.1

10 years ago

1.4.0

10 years ago

1.3.4

10 years ago

1.3.3

10 years ago

1.3.2

10 years ago

1.3.1

10 years ago

1.3.0

10 years ago

1.2.0

10 years ago

1.1.0

10 years ago

1.0.7

10 years ago

1.0.6

10 years ago

1.0.5

10 years ago

1.0.4

10 years ago

1.0.3

10 years ago

1.0.2

10 years ago

1.0.1

10 years ago