Acme.BookStore.HttpApi.Host/node_modules/yargs/lib/command.js
(开头部分) 11KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
const path = require('path')
const inspect = require('util').inspect
const camelCase = require('camelcase')
const DEFAULT_MARKER = '*'
// handles parsing positional arguments,
// and populating argv with said positional
// arguments.
module.exports = function (yargs, usage, validation) {
const self = {}
var handlers = {}
var aliasMap = {}
var defaultCommand
self.addHandler = function (cmd, description, builder, handler) {
var aliases = []
if (Array.isArray(cmd)) {
aliases = cmd.slice(1)
cmd = cmd[0]
} else if (typeof cmd === 'object') {
var command = (Array.isArray(cmd.command) || typeof cmd.command === 'string') ? cmd.command : moduleName(cmd)
if (cmd.aliases) command = [].concat(command).concat(cmd.aliases)
self.addHandler(command, extractDesc(cmd), cmd.builder, cmd.handler)
return
}
// allow a module to be provided instead of separate builder and handler
if (typeof builder === 'object' && builder.builder && typeof builder.handler === 'function') {
self.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler)
return
}
// parse positionals out of cmd string
var parsedCommand = self.parseCommand(cmd)
// remove positional args from aliases only
aliases = aliases.map(function (alias) {
return self.parseCommand(alias).cmd
})
// check for default and filter out '*''
var isDefault = false
var parsedAliases = [parsedCommand.cmd].concat(aliases).filter(function (c) {
if (c === DEFAULT_MARKER) {
isDefault = true
return false
}
return true
})
// short-circuit if default with no aliases
if (isDefault && parsedAliases.length === 0) {
defaultCommand = {
original: cmd.replace(DEFAULT_MARKER, '').trim(),
handler: handler,
builder: builder || {},
demanded: parsedCommand.demanded,
optional: parsedCommand.optional
}
后面还有 274 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
