UNPKG

charlike

Version:

Small, fast, simple and streaming project scaffolder for myself, but not only. Supports hundreds of template engines through the @JSTransformers API or if you want custom `render` function passed through options

49 lines (41 loc) 1.75 kB
/** * @module create-header * @author Toru Nagashima * @copyright 2016 Toru Nagashima. All rights reserved. * See LICENSE file in root directory for full license. */ "use strict" //------------------------------------------------------------------------------ // Requirements //------------------------------------------------------------------------------ const chalk = require("chalk") //------------------------------------------------------------------------------ // Public Interface //------------------------------------------------------------------------------ /** * Creates the header text for a given task. * * @param {string} nameAndArgs - A task name and arguments. * @param {object} packageInfo - A package.json's information. * @param {object} packageInfo.body - A package.json's JSON object. * @param {string} packageInfo.path - A package.json's file path. * @param {boolean} isTTY - The flag to color the header. * @returns {string} The header of a given task. */ module.exports = function createHeader(nameAndArgs, packageInfo, isTTY) { if (!packageInfo) { return `\n> ${nameAndArgs}\n\n` } const index = nameAndArgs.indexOf(" ") const name = (index === -1) ? nameAndArgs : nameAndArgs.slice(0, index) const args = (index === -1) ? "" : nameAndArgs.slice(index + 1) const packageName = packageInfo.body.name const packageVersion = packageInfo.body.version const scriptBody = packageInfo.body.scripts[name] const packagePath = packageInfo.path const color = isTTY ? chalk.styles.gray : {open: "", close: ""} return ` ${color.open}> ${packageName}@${packageVersion} ${name} ${packagePath}${color.close} ${color.open}> ${scriptBody} ${args}${color.close} ` }