@kubb/cli
Version:
Command-line interface for Kubb, enabling easy generation of TypeScript, React-Query, Zod, and other code from OpenAPI specifications.
56 lines (47 loc) • 1.61 kB
text/typescript
import { defineCommand, runCommand, runMain } from 'citty'
import consola from 'consola'
import { default as gradientString } from 'gradient-string'
import getLatestVersion from 'latest-version'
import { lt } from 'semver'
import { version } from '../package.json'
const name = 'kubb'
const main = defineCommand({
meta: {
name,
version,
description: 'Kubb generation',
},
async setup({ rawArgs }) {
try {
consola.log(gradientString(['#F58517', '#F5A217', '#F55A17'])('Kubb CLI:'))
const latestVersion = await getLatestVersion('@kubb/cli')
if (lt(version, latestVersion)) {
consola.box({
title: 'Update available for `Kubb` ',
message: `\`v${version}\` → \`v${latestVersion}\`
Run \`npm install -g @kubb/cli\` to update`,
style: {
padding: 2,
borderColor: 'yellow',
borderStyle: 'rounded',
},
})
}
} catch (_e) {}
if (!['generate', 'validate', 'mcp'].includes(rawArgs[0] as string)) {
console.log(rawArgs[0])
// generate is not being used
const generateCommand = await import('./commands/generate.ts').then((r) => r.default)
await runCommand(generateCommand, { rawArgs })
process.exit(0)
}
},
subCommands: {
generate: () => import('./commands/generate.ts').then((r) => r.default),
validate: () => import('./commands/validate.ts').then((r) => r.default),
mcp: () => import('./commands/mcp.ts').then((r) => r.default),
},
})
export async function run(_argv?: string[]): Promise<void> {
await runMain(main)
}