{"version":3,"file":"cli.mjs","sources":["../src/cli/index.ts"],"sourcesContent":["import { Command } from 'commander';\n\nimport { commands as strapiCommands } from './commands';\n\nimport { createLogger } from './utils/logger';\nimport { loadTsConfig } from './utils/tsconfig';\nimport { CLIContext } from './types';\nimport { version } from '../../package.json';\n\nconst createCLI = async (argv: string[], command = new Command()) => {\n  // Initial program setup\n  command.storeOptionsAsProperties(false).allowUnknownOption(true);\n\n  // Help command\n  command.helpOption('-h, --help', 'Display help for command');\n  command.addHelpCommand('help [command]', 'Display help for command');\n\n  command.version(version, '-v, --version', 'Output the version number');\n\n  const cwd = process.cwd();\n\n  const hasDebug = argv.includes('--debug');\n  const hasSilent = argv.includes('--silent');\n\n  const logger = createLogger({ debug: hasDebug, silent: hasSilent, timestamp: false });\n\n  const tsconfig = loadTsConfig({\n    cwd,\n    path: 'tsconfig.json',\n    logger,\n  });\n\n  const ctx = {\n    cwd,\n    logger,\n    tsconfig,\n  } satisfies CLIContext;\n\n  // Load all commands\n  for (const commandFactory of strapiCommands) {\n    try {\n      const subCommand = await commandFactory({ command, argv, ctx });\n\n      // Add this command to the Commander command object\n      if (subCommand) {\n        command.addCommand(subCommand);\n      }\n    } catch (e) {\n      console.error(`Failed to load command`, e);\n    }\n  }\n\n  // TODO v6: remove these deprecation notices\n  const deprecatedCommands = [\n    { name: 'plugin:init', message: 'Please use `npx @strapi/sdk-plugin init` instead.' },\n    {\n      name: 'plugin:verify',\n      message: 'After migrating your plugin to v5, use `strapi-plugin verify`',\n    },\n    {\n      name: 'plugin:watch',\n      message: 'After migrating your plugin to v5, use `strapi-plugin watch`',\n    },\n    {\n      name: 'plugin:watch:link',\n      message: 'After migrating your plugin to v5, use `strapi-plugin watch:link`',\n    },\n    {\n      name: 'plugin:build',\n      message: 'After migrating your plugin to v5, use `strapi-plugin build`',\n    },\n  ];\n\n  // Add hidden commands for deprecatedCommands that output a warning that the command has been removed.\n  deprecatedCommands.forEach(({ name, message }) => {\n    const deprecated = new Command(name)\n      .command(name)\n      .description('(deprecated)')\n      .action(() => {\n        console.warn(\n          `The command ${name} has been deprecated. See the Strapi 5 migration guide for more information.`\n        );\n        if (message) {\n          console.warn(message);\n        }\n      });\n    command.addCommand(deprecated, { hidden: true });\n  });\n  return command;\n};\n\nconst runCLI = async (argv = process.argv, command = new Command()) => {\n  const commands = await createCLI(argv, command);\n  await commands.parseAsync(argv);\n};\n\nexport { runCLI, createCLI };\n"],"names":["createCLI","argv","command","Command","storeOptionsAsProperties","allowUnknownOption","helpOption","addHelpCommand","version","cwd","process","hasDebug","includes","hasSilent","logger","createLogger","debug","silent","timestamp","tsconfig","loadTsConfig","path","ctx","commandFactory","strapiCommands","subCommand","addCommand","e","console","error","deprecatedCommands","name","message","forEach","deprecated","description","action","warn","hidden","runCLI","commands","parseAsync"],"mappings":"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"}