"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.taskRnvPlatformEject = exports["default"] = void 0;var _inquirer = _interopRequireDefault(require("inquirer"));
var _logger = require("../../core/systemManager/logger");
var _fileutils = require("../../core/systemManager/fileutils");
var _constants = require("../../core/constants");
var _platformManager = require("../../core/platformManager");
var _taskManager = require("../../core/taskManager");function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { "default": obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);enumerableOnly && (symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;})), keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = null != arguments[i] ? arguments[i] : {};i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {_defineProperty(target, key, source[key]);}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);}_next(undefined);});};}

var taskRnvPlatformEject = /*#__PURE__*/function () {var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(c, parentTask, originTask) {var selectedPlatforms, _yield$inquirer$promp, ejectedPlatforms;return regeneratorRuntime.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:
            (0, _logger.logTask)('taskRnvPlatformEject');_context.next = 3;return (

              (0, _taskManager.executeTask)(c, _constants.TASK_PROJECT_CONFIGURE, _constants.TASK_PLATFORM_EJECT, originTask));case 3:if (!

            c.platform) {_context.next = 7;break;}
            selectedPlatforms = [c.platform];_context.next = 13;break;case 7:

            (0, _logger.logInfo)("Preparing to eject engine platforms to local ".concat((0, _logger.chalk)().white('./platformTemplates')));_context.next = 10;return (
              _inquirer["default"].prompt({
                name: 'ejectedPlatforms',
                message:
                'Select platforms you would like to eject (use SPACE key)',
                type: 'checkbox',
                choices: (0, _platformManager.generatePlatformChoices)(c).map(function (choice) {return _objectSpread(_objectSpread({},
                  choice), {}, {
                    disabled: !choice.isConnected });}) }));case 10:_yield$inquirer$promp = _context.sent;ejectedPlatforms = _yield$inquirer$promp.ejectedPlatforms;


            selectedPlatforms = ejectedPlatforms;case 13:



            if (selectedPlatforms.length) {
              selectedPlatforms.forEach(function (platform) {
                // const engine = getEngineRunnerByPlatform(c, platform);
                // const destDir = path.join(c.paths.project.dir, 'platformTemplates', platform);

                // engine.ejectPlatform(c, platform, destDir);
                (0, _platformManager.ejectPlatform)(c, platform);

                c.files.project.config.paths.
                platformTemplatesDirs = c.files.project.config.paths.platformTemplatesDirs || {};
                c.files.project.config.paths.platformTemplatesDirs[
                platform] = "./".concat(
                'platformTemplates');
                (0, _fileutils.writeFileSync)(c.paths.project.config, c.files.project.config);
              });

              (0, _logger.logSuccess)("".concat(
              (0, _logger.chalk)().white(
              selectedPlatforms.join(',')), " platform templates are located in ").concat(
              (0, _logger.chalk)().white(
              c.files.project.config.paths.platformTemplatesDirs[selectedPlatforms[0]]), " now. You can edit them directly!"));


            } else {
              (0, _logger.logError)("You haven't selected any platform to eject.\nTIP: You can select options with ".concat(
              (0, _logger.chalk)().white('SPACE'), " key before pressing ENTER!"));
            }case 14:case "end":return _context.stop();}}}, _callee);}));return function taskRnvPlatformEject(_x, _x2, _x3) {return _ref.apply(this, arguments);};}();exports.taskRnvPlatformEject = taskRnvPlatformEject;var _default =


{
  description: 'Copy all platform files directly to project',
  fn: taskRnvPlatformEject,
  task: 'platform eject',
  params: _constants.PARAMS.withBase(),
  platforms: [] };exports["default"] = _default;
//# sourceMappingURL=task.rnv.platform.eject.js.map