@strapi/strapi
Version:
An open source headless CMS solution to create and manage your own API. It provides a powerful dashboard and features to make your life easier. Databases supported: MySQL, MariaDB, PostgreSQL, SQLite
1 lines • 6.61 kB
Source Map (JSON)
{"version":3,"file":"command.mjs","sources":["../../../../../src/cli/commands/import/command.ts"],"sourcesContent":["import { statSync } from 'fs';\nimport path from 'path';\nimport { createCommand, Option } from 'commander';\nimport {\n excludeOption,\n onlyOption,\n throttleOption,\n validateExcludeOnly,\n} from '../../utils/data-transfer';\nimport { getCommanderConfirmMessage, forceOption } from '../../utils/commander';\nimport { exitWith } from '../../utils/helpers';\nimport { getInquirer } from '../../utils/get-inquirer';\nimport action from './action';\n\n/**\n * `$ strapi import`\n */\nconst command = () => {\n return (\n createCommand('import')\n .description('Import data from file to Strapi')\n .allowExcessArguments(false)\n .requiredOption(\n '-f, --file <file>',\n 'path to a Strapi export (.tar[.gz][.enc]) or to an unpacked export directory'\n )\n .addOption(\n new Option(\n '-k, --key <string>',\n 'Provide encryption key in command instead of using the prompt'\n )\n )\n .addOption(new Option('--verbose', 'Enable verbose logs'))\n .addOption(forceOption)\n .addOption(excludeOption)\n .addOption(onlyOption)\n .addOption(throttleOption)\n .hook('preAction', validateExcludeOnly)\n .hook('preAction', async (thisCommand) => {\n const opts = thisCommand.opts();\n const ext = path.extname(String(opts.file));\n\n // check extension to guess if we should prompt for key\n if (ext === '.enc') {\n if (!opts.key) {\n const inquirer = await getInquirer();\n const answers = await inquirer.prompt([\n {\n type: 'password',\n message: 'Please enter your decryption key',\n name: 'key',\n },\n ]);\n if (!answers.key?.length) {\n exitWith(1, 'No key entered, aborting import.');\n }\n opts.key = answers.key;\n }\n }\n })\n // set decrypt and decompress options based on filename (archive only)\n .hook('preAction', (thisCommand) => {\n const opts = thisCommand.opts();\n const filePath = String(opts.file);\n\n let isDirectory = false;\n try {\n isDirectory = statSync(filePath).isDirectory();\n } catch {\n // missing path or unreadable — let the transfer fail later with a clear error\n }\n\n if (isDirectory) {\n thisCommand.opts().decrypt = false;\n thisCommand.opts().decompress = false;\n return;\n }\n\n const { extname, parse } = path;\n\n let file = filePath;\n\n if (extname(file) === '.enc') {\n file = parse(file).name; // trim the .enc extension\n thisCommand.opts().decrypt = true;\n } else {\n thisCommand.opts().decrypt = false;\n }\n\n if (extname(file) === '.gz') {\n file = parse(file).name; // trim the .gz extension\n thisCommand.opts().decompress = true;\n } else {\n thisCommand.opts().decompress = false;\n }\n\n if (extname(file) !== '.tar') {\n exitWith(\n 1,\n `The file '${opts.file}' does not appear to be a valid Strapi data file. Use a path ending in .tar[.gz][.enc], or an existing directory that contains an unpacked export (e.g. metadata.json).`\n );\n }\n })\n .hook(\n 'preAction',\n getCommanderConfirmMessage(\n 'The import will delete your existing data! Are you sure you want to proceed?',\n { failMessage: 'Import process aborted' }\n )\n )\n .action(action)\n );\n};\n\nexport default command;\n"],"names":["command","createCommand","description","allowExcessArguments","requiredOption","addOption","Option","forceOption","excludeOption","onlyOption","throttleOption","hook","validateExcludeOnly","thisCommand","opts","ext","path","extname","String","file","key","inquirer","getInquirer","answers","prompt","type","message","name","length","exitWith","filePath","isDirectory","statSync","decrypt","decompress","parse","getCommanderConfirmMessage","failMessage","action"],"mappings":";;;;;;;;;AAcA;;AAEC,UACKA,OAAAA,GAAU,IAAA;AACd,IAAA,OACEC,cAAc,QAAA,CAAA,CACXC,WAAW,CAAC,iCAAA,CAAA,CACZC,oBAAoB,CAAC,KAAA,CAAA,CACrBC,cAAc,CACb,mBAAA,EACA,8EAAA,CAAA,CAEDC,SAAS,CACR,IAAIC,OACF,oBAAA,EACA,+DAAA,CAAA,CAAA,CAGHD,SAAS,CAAC,IAAIC,OAAO,WAAA,EAAa,qBAAA,CAAA,CAAA,CAClCD,SAAS,CAACE,WAAAA,CAAAA,CACVF,SAAS,CAACG,aAAAA,CAAAA,CACVH,SAAS,CAACI,UAAAA,CAAAA,CACVJ,SAAS,CAACK,cAAAA,CAAAA,CACVC,IAAI,CAAC,WAAA,EAAaC,qBAClBD,IAAI,CAAC,aAAa,OAAOE,WAAAA,GAAAA;QACxB,MAAMC,IAAAA,GAAOD,YAAYC,IAAI,EAAA;AAC7B,QAAA,MAAMC,MAAMC,IAAAA,CAAKC,OAAO,CAACC,MAAAA,CAAOJ,KAAKK,IAAI,CAAA,CAAA;;AAGzC,QAAA,IAAIJ,QAAQ,MAAA,EAAQ;YAClB,IAAI,CAACD,IAAAA,CAAKM,GAAG,EAAE;AACb,gBAAA,MAAMC,WAAW,MAAMC,WAAAA,EAAAA;AACvB,gBAAA,MAAMC,OAAAA,GAAU,MAAMF,QAAAA,CAASG,MAAM,CAAC;AACpC,oBAAA;wBACEC,IAAAA,EAAM,UAAA;wBACNC,OAAAA,EAAS,kCAAA;wBACTC,IAAAA,EAAM;AACR;AACD,iBAAA,CAAA;AACD,gBAAA,IAAI,CAACJ,OAAAA,CAAQH,GAAG,EAAEQ,MAAAA,EAAQ;AACxBC,oBAAAA,QAAAA,CAAS,CAAA,EAAG,kCAAA,CAAA;AACd,gBAAA;gBACAf,IAAAA,CAAKM,GAAG,GAAGG,OAAAA,CAAQH,GAAG;AACxB,YAAA;AACF,QAAA;AACF,IAAA,CAAA,CACA;KACCT,IAAI,CAAC,aAAa,CAACE,WAAAA,GAAAA;QAClB,MAAMC,IAAAA,GAAOD,YAAYC,IAAI,EAAA;QAC7B,MAAMgB,QAAAA,GAAWZ,MAAAA,CAAOJ,IAAAA,CAAKK,IAAI,CAAA;AAEjC,QAAA,IAAIY,WAAAA,GAAc,KAAA;QAClB,IAAI;YACFA,WAAAA,GAAcC,QAAAA,CAASF,UAAUC,WAAW,EAAA;AAC9C,QAAA,CAAA,CAAE,OAAM;;AAER,QAAA;AAEA,QAAA,IAAIA,WAAAA,EAAa;YACflB,WAAAA,CAAYC,IAAI,EAAA,CAAGmB,OAAO,GAAG,KAAA;YAC7BpB,WAAAA,CAAYC,IAAI,EAAA,CAAGoB,UAAU,GAAG,KAAA;AAChC,YAAA;AACF,QAAA;AAEA,QAAA,MAAM,EAAEjB,OAAO,EAAEkB,KAAK,EAAE,GAAGnB,IAAAA;AAE3B,QAAA,IAAIG,IAAAA,GAAOW,QAAAA;QAEX,IAAIb,OAAAA,CAAQE,UAAU,MAAA,EAAQ;AAC5BA,YAAAA,IAAAA,GAAOgB,KAAAA,CAAMhB,IAAAA,CAAAA,CAAMQ,IAAI,CAAA;YACvBd,WAAAA,CAAYC,IAAI,EAAA,CAAGmB,OAAO,GAAG,IAAA;QAC/B,CAAA,MAAO;YACLpB,WAAAA,CAAYC,IAAI,EAAA,CAAGmB,OAAO,GAAG,KAAA;AAC/B,QAAA;QAEA,IAAIhB,OAAAA,CAAQE,UAAU,KAAA,EAAO;AAC3BA,YAAAA,IAAAA,GAAOgB,KAAAA,CAAMhB,IAAAA,CAAAA,CAAMQ,IAAI,CAAA;YACvBd,WAAAA,CAAYC,IAAI,EAAA,CAAGoB,UAAU,GAAG,IAAA;QAClC,CAAA,MAAO;YACLrB,WAAAA,CAAYC,IAAI,EAAA,CAAGoB,UAAU,GAAG,KAAA;AAClC,QAAA;QAEA,IAAIjB,OAAAA,CAAQE,UAAU,MAAA,EAAQ;YAC5BU,QAAAA,CACE,CAAA,EACA,CAAC,UAAU,EAAEf,KAAKK,IAAI,CAAC,uKAAuK,CAAC,CAAA;AAEnM,QAAA;AACF,IAAA,CAAA,CAAA,CACCR,IAAI,CACH,WAAA,EACAyB,0BAAAA,CACE,8EAAA,EACA;QAAEC,WAAAA,EAAa;AAAyB,KAAA,CAAA,CAAA,CAG3CC,MAAM,CAACA,MAAAA,CAAAA;AAEd;;;;"}