49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
'use strict'
|
|
|
|
const { EOL } = require('os')
|
|
|
|
const computeMetadata = require('./deps.js').computeMetadata
|
|
const mutateIntoLogicalTree = require('./mutate-into-logical-tree.js')
|
|
var { getFundingInfo } = require('../utils/funding.js')
|
|
|
|
exports.getPrintFundingReport = getPrintFundingReport
|
|
exports.getPrintFundingReportJSON = getPrintFundingReportJSON
|
|
|
|
function getFundingResult ({ fund, idealTree }) {
|
|
if (fund) {
|
|
const fundingInfoTree =
|
|
mutateIntoLogicalTree.asReadInstalled(
|
|
computeMetadata(idealTree)
|
|
)
|
|
const fundResult = getFundingInfo(fundingInfoTree, { countOnly: true })
|
|
return fundResult
|
|
} else {
|
|
return {}
|
|
}
|
|
}
|
|
|
|
function getPrintFundingReport ({ fund, idealTree }, opts) {
|
|
const fundResult = getFundingResult({ fund, idealTree })
|
|
const { length } = fundResult || {}
|
|
const { json } = opts || {}
|
|
|
|
function padding (msg) {
|
|
return json ? '' : (EOL + msg)
|
|
}
|
|
|
|
function packageQuantity (amount) {
|
|
return `package${amount > 1 ? 's are' : ' is'}`
|
|
}
|
|
|
|
if (!length) return ''
|
|
|
|
return padding('') + length + ' ' +
|
|
packageQuantity(length) +
|
|
' looking for funding' +
|
|
padding(' run `npm fund` for details\n')
|
|
}
|
|
|
|
function getPrintFundingReportJSON ({ fund, idealTree }) {
|
|
return getPrintFundingReport({ fund, idealTree }, { json: true })
|
|
}
|