"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = fetchTemplate; function _path() { const data = _interopRequireDefault(require("path")); _path = function () { return data; }; return data; } function _fsExtra() { const data = _interopRequireDefault(require("fs-extra")); _fsExtra = function () { return data; }; return data; } function _pacote() { const data = _interopRequireDefault(require("pacote")); _pacote = function () { return data; }; return data; } function _chalk() { const data = _interopRequireDefault(require("chalk")); _chalk = function () { return data; }; return data; } function _xdl() { const data = require("@expo/xdl"); _xdl = function () { return data; }; return data; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const DEFAULT_TEMPLATE = 'expo-module-template@latest'; /** * Fetches directory from npm or given templateDirectory into destinationPath * @param {path} destinationPath - destination for fetched template * @param {string?} template - optional template provided as npm package or local directory */ async function fetchTemplate(destinationPath, template) { if (template && (await _fsExtra().default.exists(_path().default.resolve(template)))) { // local template _xdl().Logger.global.info(`Using local template: ${_chalk().default.bold(_path().default.resolve(template))}.`); await _fsExtra().default.copy(_path().default.resolve(template), destinationPath); } else if (template && isNpmPackage(template)) { // npm package _xdl().Logger.global.info(`Using NPM package as template: ${_chalk().default.bold(template)}`); await _pacote().default.extract(template, destinationPath); } else { // default npm packge _xdl().Logger.global.info(`Using default NPM package as template: ${_chalk().default.bold(DEFAULT_TEMPLATE)}`); await _pacote().default.extract(DEFAULT_TEMPLATE, destinationPath); } if (await _fsExtra().default.pathExists(_path().default.join(destinationPath, 'template-unimodule.json'))) { await _fsExtra().default.move(_path().default.join(destinationPath, 'template-unimodule.json'), _path().default.join(destinationPath, 'unimodule.json')); } } function isNpmPackage(template) { return !template.match(/^\./) && // don't start with . !template.match(/^_/) && // don't start with _ template.toLowerCase() === template && // only lowercase !/[~'!()*]/.test(template.split('/').slice(-1)[0]) && // don't contain any character from [~'!()*] template.match(/^(@([^/]+?)\/)?([^/@]+)(@(\d\.\d\.\d)(-[^/@]+)?)?$/) // has shape (@scope/)?actual-package-name(@0.1.1(-tag.1)?)? ; } //# sourceMappingURL=../../__sourcemaps__/commands/generate-module/fetchTemplate.js.map