mirror of
https://github.com/serverless/serverless.git
synced 2025-12-08 19:46:03 +00:00
80 lines
2.5 KiB
JavaScript
80 lines
2.5 KiB
JavaScript
import utils from '@serverlessinc/sf-core/src/utils.js'
|
|
import globalOptions from '../commands-options-schema.js'
|
|
import generateCommandUsage from './generate-command-usage.js'
|
|
import renderOptions from './options.js'
|
|
|
|
const { writeText, style, log } = utils
|
|
|
|
export default ({ loadedPlugins, commandsSchema, version }) => {
|
|
log.logo()
|
|
|
|
writeText(`${style.aside('Usage')}
|
|
serverless <command> <options>
|
|
sls <command> <options>
|
|
|
|
${style.aside('Get Started')}
|
|
Run ${style.strong('serverless')} to interactively setup a project.
|
|
|
|
${style.aside('Dashboard')}
|
|
See metrics, traces, logs, errors, deployments and more in Serverless Framework Dashboard.
|
|
Learn more: ${style.linkStrong('https://app.serverless.com')}
|
|
|
|
${style.aside('Plugins')}
|
|
Extend the Serverless Framework with plugins.
|
|
Explore plugins: ${style.linkStrong('https://serverless.com/plugins')}
|
|
|
|
${style.aside('Options')}`)
|
|
|
|
renderOptions(globalOptions, { shouldWriteModernOnly: true })
|
|
writeText()
|
|
|
|
const allCommands = new Map(
|
|
Array.from(commandsSchema).filter(
|
|
([commandName, { isHidden }]) => commandName && !isHidden,
|
|
),
|
|
)
|
|
const mainCommands = new Map(
|
|
Array.from(allCommands).filter(([, { groupName }]) => groupName === 'main'),
|
|
)
|
|
|
|
if (mainCommands.size) {
|
|
writeText(null, style.aside('Main commands'))
|
|
for (const [commandName, commandSchema] of mainCommands) {
|
|
writeText(generateCommandUsage(commandName, commandSchema))
|
|
}
|
|
writeText()
|
|
writeText(null, style.aside('Other commands'))
|
|
} else {
|
|
writeText(null, style.aside('All commands'))
|
|
}
|
|
|
|
const extensionCommandsSchema = new Map()
|
|
|
|
for (const [commandName, commandSchema] of allCommands) {
|
|
if (commandSchema.isExtension) {
|
|
if (!extensionCommandsSchema.has(commandSchema.sourcePlugin)) {
|
|
extensionCommandsSchema.set(commandSchema.sourcePlugin, new Map())
|
|
}
|
|
extensionCommandsSchema
|
|
.get(commandSchema.sourcePlugin)
|
|
.set(commandName, commandSchema)
|
|
continue
|
|
}
|
|
if (commandSchema.groupName === 'main') continue
|
|
|
|
writeText(generateCommandUsage(commandName, commandSchema))
|
|
}
|
|
|
|
if (loadedPlugins.size) {
|
|
if (extensionCommandsSchema.size) {
|
|
for (const [plugin, pluginCommandsSchema] of extensionCommandsSchema) {
|
|
writeText(null, style.aside(plugin.constructor.name))
|
|
for (const [commandName, commandSchema] of pluginCommandsSchema) {
|
|
writeText(generateCommandUsage(commandName, commandSchema))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
writeText()
|
|
}
|