"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.taskRnvPlatformConnect = exports["default"] = void 0;var _path = _interopRequireDefault(require("path"));
var _inquirer = _interopRequireDefault(require("inquirer"));

var _logger = require("../../core/systemManager/logger");
var _fileutils = require("../../core/systemManager/fileutils");



var _platformManager = require("../../core/platformManager");
var _taskManager = require("../../core/taskManager");
var _constants = require("../../core/constants");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 taskRnvPlatformConnect = /*#__PURE__*/function () {var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(c, parentTask, originTask) {var selectedPlatforms, _yield$inquirer$promp, connectedPlatforms, _yield$inquirer$promp2, deletePlatformFolder, pathsToRemove;return regeneratorRuntime.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:
            (0, _logger.logTask)('taskRnvPlatformConnect');_context.next = 3;return (

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

            c.files.project.config.paths.platformTemplatesDirs) {_context.next = 6;break;}
            (0, _logger.logToSummary)('All supported platforms are connected. nothing to do.');return _context.abrupt("return");case 6:if (!




            c.platform) {_context.next = 10;break;}
            selectedPlatforms = [c.platform];_context.next = 15;break;case 10:_context.next = 12;return (

              _inquirer["default"].prompt({
                name: 'connectedPlatforms',
                message:
                'This will point platformTemplates folders from your local project to ReNative managed one. Select platforms you would like to connect',
                type: 'checkbox',
                choices: (0, _platformManager.generatePlatformChoices)(c).map(function (choice) {return _objectSpread(_objectSpread({},
                  choice), {}, {
                    disabled: choice.isConnected });}) }));case 12:_yield$inquirer$promp = _context.sent;connectedPlatforms = _yield$inquirer$promp.connectedPlatforms;


            selectedPlatforms = connectedPlatforms;case 15:



            if (selectedPlatforms.length) {
              selectedPlatforms.forEach(function (platform) {var _c$files$project$conf;
                if ((_c$files$project$conf = c.files.project.config.paths.platformTemplatesDirs) !== null && _c$files$project$conf !== void 0 && _c$files$project$conf[platform]) {
                  delete c.files.project.config.paths.platformTemplatesDirs[platform];
                }

                if (!Object.keys(c.files.project.config.paths.platformTemplatesDirs).length) {
                  delete c.files.project.config.paths.platformTemplatesDirs; // also cleanup the empty object
                }

                (0, _fileutils.writeFileSync)(c.paths.project.config, c.files.project.config);
              });
            }_context.next = 18;return (

              _inquirer["default"].prompt({
                name: 'deletePlatformFolder',
                type: 'confirm',
                message:
                'Would you also like to delete the previously used platform folder?' }));case 18:_yield$inquirer$promp2 = _context.sent;deletePlatformFolder = _yield$inquirer$promp2.deletePlatformFolder;if (!


            deletePlatformFolder) {_context.next = 25;break;}
            pathsToRemove = [];
            selectedPlatforms.forEach(function (platform) {
              pathsToRemove.push(
              _path["default"].join(
              c.paths.project.platformTemplatesDirs[platform],
              platform));


            });

            // TODO: Remove shared folders as well
            _context.next = 25;return (
              (0, _fileutils.removeDirs)(pathsToRemove));case 25:


            (0, _logger.logSuccess)("".concat(
            (0, _logger.chalk)().white(
            selectedPlatforms.join(',')), " now using ReNative platformTemplates located associated platform engines."));case 26:case "end":return _context.stop();}}}, _callee);}));return function taskRnvPlatformConnect(_x, _x2, _x3) {return _ref.apply(this, arguments);};}();exports.taskRnvPlatformConnect = taskRnvPlatformConnect;var _default =




{
  description: 'Connect platform template back to rnv',
  fn: taskRnvPlatformConnect,
  task: _constants.TASK_PLATFORM_CONNECT,
  params: _constants.PARAMS.withBase(),
  platforms: [] };exports["default"] = _default;
//# sourceMappingURL=task.rnv.platform.connect.js.map