{"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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"}