@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 • 5.49 kB
Source Map (JSON)
{"version":3,"file":"command.mjs","sources":["../../../../../src/cli/commands/import/command.ts"],"sourcesContent":["import path from 'path';\nimport { createCommand, Option } from 'commander';\nimport inquirer from 'inquirer';\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 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 and filename for the Strapi export file you want to import'\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 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\n .hook('preAction', (thisCommand) => {\n const opts = thisCommand.opts();\n\n const { extname, parse } = path;\n\n let file = opts.file;\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. It must have an extension ending in .tar[.gz][.enc]`\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","answers","inquirer","prompt","type","message","name","length","exitWith","parse","decrypt","decompress","getCommanderConfirmMessage","failMessage","action"],"mappings":";;;;;;;;AAaA;;AAEC,UACKA,OAAU,GAAA,IAAA;AACd,IAAA,OACEC,cAAc,QACXC,CAAAA,CAAAA,WAAW,CAAC,iCACZC,CAAAA,CAAAA,oBAAoB,CAAC,KACrBC,CAAAA,CAAAA,cAAc,CACb,mBACA,EAAA,iEAAA,CAAA,CAEDC,SAAS,CACR,IAAIC,OACF,oBACA,EAAA,+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,IAAKC,CAAAA,OAAO,CAACC,MAAAA,CAAOJ,KAAKK,IAAI,CAAA,CAAA;;AAGzC,QAAA,IAAIJ,QAAQ,MAAQ,EAAA;YAClB,IAAI,CAACD,IAAKM,CAAAA,GAAG,EAAE;AACb,gBAAA,MAAMC,OAAU,GAAA,MAAMC,QAASC,CAAAA,MAAM,CAAC;AACpC,oBAAA;wBACEC,IAAM,EAAA,UAAA;wBACNC,OAAS,EAAA,kCAAA;wBACTC,IAAM,EAAA;AACR;AACD,iBAAA,CAAA;AACD,gBAAA,IAAI,CAACL,OAAAA,CAAQD,GAAG,EAAEO,MAAQ,EAAA;AACxBC,oBAAAA,QAAAA,CAAS,CAAG,EAAA,kCAAA,CAAA;AACd;gBACAd,IAAKM,CAAAA,GAAG,GAAGC,OAAAA,CAAQD,GAAG;AACxB;AACF;AACF,KAAA,CACA;KACCT,IAAI,CAAC,aAAa,CAACE,WAAAA,GAAAA;QAClB,MAAMC,IAAAA,GAAOD,YAAYC,IAAI,EAAA;AAE7B,QAAA,MAAM,EAAEG,OAAO,EAAEY,KAAK,EAAE,GAAGb,IAAAA;QAE3B,IAAIG,IAAAA,GAAOL,KAAKK,IAAI;QAEpB,IAAIF,OAAAA,CAAQE,UAAU,MAAQ,EAAA;AAC5BA,YAAAA,IAAAA,GAAOU,KAAMV,CAAAA,IAAAA,CAAAA,CAAMO,IAAI,CAAA;YACvBb,WAAYC,CAAAA,IAAI,EAAGgB,CAAAA,OAAO,GAAG,IAAA;SACxB,MAAA;YACLjB,WAAYC,CAAAA,IAAI,EAAGgB,CAAAA,OAAO,GAAG,KAAA;AAC/B;QAEA,IAAIb,OAAAA,CAAQE,UAAU,KAAO,EAAA;AAC3BA,YAAAA,IAAAA,GAAOU,KAAMV,CAAAA,IAAAA,CAAAA,CAAMO,IAAI,CAAA;YACvBb,WAAYC,CAAAA,IAAI,EAAGiB,CAAAA,UAAU,GAAG,IAAA;SAC3B,MAAA;YACLlB,WAAYC,CAAAA,IAAI,EAAGiB,CAAAA,UAAU,GAAG,KAAA;AAClC;QAEA,IAAId,OAAAA,CAAQE,UAAU,MAAQ,EAAA;YAC5BS,QACE,CAAA,CAAA,EACA,CAAC,UAAU,EAAEd,KAAKK,IAAI,CAAC,qGAAqG,CAAC,CAAA;AAEjI;AACF,KAAA,CAAA,CACCR,IAAI,CACH,WACAqB,EAAAA,0BAAAA,CACE,8EACA,EAAA;QAAEC,WAAa,EAAA;AAAyB,KAAA,CAAA,CAAA,CAG3CC,MAAM,CAACA,MAAAA,CAAAA;AAEd;;;;"}