{"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,OAAAA,GAAU,IAAA;AACd,IAAA,OACEC,cAAc,QAAA,CAAA,CACXC,WAAW,CAAC,iCAAA,CAAA,CACZC,oBAAoB,CAAC,KAAA,CAAA,CACrBC,cAAc,CACb,mBAAA,EACA,iEAAA,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,OAAAA,GAAU,MAAMC,QAAAA,CAASC,MAAM,CAAC;AACpC,oBAAA;wBACEC,IAAAA,EAAM,UAAA;wBACNC,OAAAA,EAAS,kCAAA;wBACTC,IAAAA,EAAM;AACR;AACD,iBAAA,CAAA;AACD,gBAAA,IAAI,CAACL,OAAAA,CAAQD,GAAG,EAAEO,MAAAA,EAAQ;AACxBC,oBAAAA,QAAAA,CAAS,CAAA,EAAG,kCAAA,CAAA;AACd,gBAAA;gBACAd,IAAAA,CAAKM,GAAG,GAAGC,OAAAA,CAAQD,GAAG;AACxB,YAAA;AACF,QAAA;AACF,IAAA,CAAA,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,MAAA,EAAQ;AAC5BA,YAAAA,IAAAA,GAAOU,KAAAA,CAAMV,IAAAA,CAAAA,CAAMO,IAAI,CAAA;YACvBb,WAAAA,CAAYC,IAAI,EAAA,CAAGgB,OAAO,GAAG,IAAA;QAC/B,CAAA,MAAO;YACLjB,WAAAA,CAAYC,IAAI,EAAA,CAAGgB,OAAO,GAAG,KAAA;AAC/B,QAAA;QAEA,IAAIb,OAAAA,CAAQE,UAAU,KAAA,EAAO;AAC3BA,YAAAA,IAAAA,GAAOU,KAAAA,CAAMV,IAAAA,CAAAA,CAAMO,IAAI,CAAA;YACvBb,WAAAA,CAAYC,IAAI,EAAA,CAAGiB,UAAU,GAAG,IAAA;QAClC,CAAA,MAAO;YACLlB,WAAAA,CAAYC,IAAI,EAAA,CAAGiB,UAAU,GAAG,KAAA;AAClC,QAAA;QAEA,IAAId,OAAAA,CAAQE,UAAU,MAAA,EAAQ;YAC5BS,QAAAA,CACE,CAAA,EACA,CAAC,UAAU,EAAEd,KAAKK,IAAI,CAAC,qGAAqG,CAAC,CAAA;AAEjI,QAAA;AACF,IAAA,CAAA,CAAA,CACCR,IAAI,CACH,WAAA,EACAqB,0BAAAA,CACE,8EAAA,EACA;QAAEC,WAAAA,EAAa;AAAyB,KAAA,CAAA,CAAA,CAG3CC,MAAM,CAACA,MAAAA,CAAAA;AAEd;;;;"}