49 lines
1.7 KiB
JavaScript
49 lines
1.7 KiB
JavaScript
|
/**
|
||
|
* @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 ansiStyles = require("ansi-styles")
|
||
|
|
||
|
//------------------------------------------------------------------------------
|
||
|
// 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 ? ansiStyles.gray : { open: "", close: "" }
|
||
|
|
||
|
return `
|
||
|
${color.open}> ${packageName}@${packageVersion} ${name} ${packagePath}${color.close}
|
||
|
${color.open}> ${scriptBody} ${args}${color.close}
|
||
|
|
||
|
`
|
||
|
}
|