You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

183 lines
5.2 KiB

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.selectInstallBlockArgs = selectInstallBlockArgs;
exports.getDefaultBlockList = getDefaultBlockList;
function _react() {
const data = _interopRequireDefault(require("react"));
_react = function _react() {
return data;
};
return data;
}
function _inquirer() {
const data = _interopRequireDefault(require("inquirer"));
_inquirer = function _inquirer() {
return data;
};
return data;
}
function _ora() {
const data = _interopRequireDefault(require("ora"));
_ora = function _ora() {
return data;
};
return data;
}
function _utils() {
const data = require("@umijs/utils");
_utils = function _utils() {
return data;
};
return data;
}
var _util = require("./util");
var _addBlock = require("./addBlock");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: 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); }); }; }
/**
* 交互型区块选择
* - 选择区块名
* - 输入路径
* - 选择是否转化 js
* @param {[
* name:string;
* value:string;
* key:string;
* ]} blockArray
* @returns Promise<{args}>
*/
function selectInstallBlockArgs(_x) {
return _selectInstallBlockArgs.apply(this, arguments);
}
/**
* 获取区块列表,默认会从 http://blocks.umijs.org/api/blocks 拉
* 如果配置 defaultGitUrl ,会从 defaultGitUrl 去找
* @param {*} _
* @param {*} blockConfig
*/
function _selectInstallBlockArgs() {
_selectInstallBlockArgs = _asyncToGenerator(function* (blockArray) {
return new Promise( /*#__PURE__*/function () {
var _ref = _asyncToGenerator(function* (resolve) {
let locale = false;
const _yield$inquirer$promp = yield _inquirer().default.prompt([{
type: 'list',
name: 'block',
message: `⛰ 请选择区块(共 ${blockArray.length} 个 )`,
choices: blockArray
}, {
type: 'input',
name: 'path',
message: '🏗 请输入输出安装区块的路径'
}, {
type: 'confirm',
name: 'js',
message: '🤔 将 Typescript 区块转化为 js?',
default: false
}, {
type: 'confirm',
name: 'uni18n',
message: '🌎 删除 i18n 代码? ',
default: false
}]),
block = _yield$inquirer$promp.block,
path = _yield$inquirer$promp.path,
js = _yield$inquirer$promp.js,
uni18n = _yield$inquirer$promp.uni18n;
if (uni18n) {
const _yield$inquirer$promp2 = yield _inquirer().default.prompt([{
type: 'input',
name: 'region',
message: '🌎 请输入你的选择的语言? ',
default: 'zh-CN'
}]),
region = _yield$inquirer$promp2.region;
locale = region;
}
const blockPath = path || (0, _util.genBlockName)(block);
resolve({
url: block,
path: blockPath,
js,
uni18n: locale
});
});
return function (_x3) {
return _ref.apply(this, arguments);
};
}());
});
return _selectInstallBlockArgs.apply(this, arguments);
}
function getDefaultBlockList(_x2) {
return _getDefaultBlockList.apply(this, arguments);
}
function _getDefaultBlockList() {
_getDefaultBlockList = _asyncToGenerator(function* (_, blockConfig = {}, api) {
const spinner = (0, _ora().default)();
let blockArray = [];
const defaultGitUrl = blockConfig.defaultGitUrl;
spinner.start('🚣 fetch block list'); // 如果存在 defaultGitUrl 的配置,就从 defaultGitUrl 配置中拿区块列表
if (defaultGitUrl) {
// 一个 github 的 api,可以获得文件树
const files = yield (0, _util.getBlockListFromGit)(defaultGitUrl);
blockArray = (0, _util.printBlocks)(files, 'link');
} else {
const _yield$got = yield (0, _utils().got)(`http://blocks.umijs.org/api/blocks`),
body = _yield$got.body;
const _JSON$parse = JSON.parse(body),
status = _JSON$parse.status,
error = _JSON$parse.error,
data = _JSON$parse.data;
if (status === 'success') {
blockArray = (0, _util.printBlocks)(data);
} else {
throw new Error(error);
}
}
spinner.succeed();
if (blockArray.length > 0) {
const args = yield selectInstallBlockArgs(blockArray);
return (0, _addBlock.addBlock)(args, {}, api);
}
return new Error('No block found');
});
return _getDefaultBlockList.apply(this, arguments);
}