UNPKG

ionic

Version:

A tool for creating and developing Ionic Framework mobile apps.

245 lines (203 loc) • 4.86 kB
'use strict'; var IonicAppLib = require('ionic-app-lib'); var log = IonicAppLib.logging.logger; var chalk = require('chalk'); var EOL = require('os').EOL; /** * @method printIonic * @return {Array} Returns array of lines to print for ionic name */ function printIonic(ionicVersion) { return [ ' _ _ ', ' (_) (_) ', ' _ ___ _ __ _ ___ ', ' | |/ _ \\| \'_ \\| |/ __| ', ' | | (_) | | | | | (__ ', ' |_|\\___/|_| |_|_|\\___| CLI v' + ionicVersion ]; } /** * @method printTemplate * @param {Array} lineArray list of lines to print * @return {Null} no return value */ function printTemplate(lineArray) { log.info(lineArray.reduce(function(all, line) { all += (line !== null) ? line + '\n' : ''; return all; }, '')); } /** * @method printAvailableTasks * @param {String} taskName task name supplied to cli * @return {Null} no return value */ function printTaskListShortUsage(taskList, taskName, ionicVersion) { var taskLines = taskList .filter(function(task) { return task.summary; }) .map(function(task) { var name = ' ' + task.name + ' '; var dots = ''; while ((name + dots).length < 20) { dots += '.'; } return chalk.green.bold(name) + chalk.grey(dots) + ' ' + chalk.bold(task.summary); }); var lines = [].concat( printIonic(ionicVersion), [ '', 'Usage: ionic task args', '', '', '=======================', (taskName ? chalk.bold.red(taskName + ' is not a valid task\n\n') : null), chalk.bold('Available tasks: '), '(use --help or -h for more info)', '', '' ], taskLines ); printTemplate(lines); } /** * @method printTaskUsage * @return {Null} no return value */ function printTaskUsage(task, ionicVersion) { var lines = [].concat( printIonic(ionicVersion), [ '', '=======================', '' ] ); printTemplate(lines); printTaskDetails(task); printTemplate([ '' ]); } /** * @method printAllTaskUsage * @return {Null} no return value */ function printTaskListUsage(taskList, ionicVersion) { var lines = [].concat( printIonic(ionicVersion), [ '', '=======================', '' ] ); printTemplate(lines); taskList .filter(function(task) { return task.summary; }).forEach(function(task) { return printTaskDetails(task); }); printTemplate([ '' ]); } /** * @method printTaskDetails * @return {Null} no return value */ function printTaskDetails(d) { function w(s) { process.stdout.write(s); } w('\n'); var rightColumn = 45; var dots = ''; var indent = ''; var x; var arg; var taskArgs = d.title; for (arg in d.args) { if ({}.hasOwnProperty.call(d.args, arg)) { taskArgs += ' ' + arg; } } w(chalk.green.bold(taskArgs)); while ((taskArgs + dots).length < rightColumn + 1) { dots += '.'; } w(' ' + chalk.grey(dots) + ' '); if (d.summary) { w(chalk.bold(d.summary)); } for (arg in d.args) { if (!d.args[arg]) continue; indent = ''; w('\n'); while (indent.length < rightColumn) { indent += ' '; } w(chalk.bold(indent + ' ' + arg + ' ')); var argDescs = d.args[arg].split(EOL); var argIndent = indent + ' '; for (x = 0; x < arg.length + 1; x += 1) { argIndent += ' '; } for (x = 0; x < argDescs.length; x += 1) { if (x === 0) { w(chalk.bold(argDescs[x])); } else { w('\n' + argIndent + chalk.bold(argDescs[x])); } } } indent = ''; while (indent.length < d.name.length + 1) { indent += ' '; } var optIndent = indent; while (optIndent.length < rightColumn + 4) { optIndent += ' '; } for (var opt in d.options) { if ({}.hasOwnProperty.call(d.options, opt)) { w('\n'); dots = ''; var optLine = indent + '[' + opt + '] '; w(chalk.yellow.bold(optLine)); if (d.options[opt]) { while ((dots.length + optLine.length - 2) < rightColumn) { dots += '.'; } w(chalk.grey(dots) + ' '); var taskOpt = d.options[opt]; var optDescs; if (typeof taskOpt == 'string') { optDescs = taskOpt.split(EOL); } else { optDescs = taskOpt.title.split(EOL); } for (x = 0; x < optDescs.length; x += 1) { if (x === 0) { w(chalk.bold(optDescs[x])); } else { w('\n' + optIndent + chalk.bold(optDescs[x])); } } } } w('\n'); } } module.exports = { printTaskListShortUsage: printTaskListShortUsage, printTaskListUsage: printTaskListUsage, printTaskUsage: printTaskUsage };