gub
Version:
> 接入成本极低,快速从原有项目(可运行项目)中clone出新项目,并重写package.json,安装依赖
528 lines (435 loc) • 13.5 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.removeAliasViewer = exports.updateAliasViewer = exports.selectAliasViewer = exports.createAliasViewer = exports.getAliasList = exports.removeAlias = exports.addAlias = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var log = require("./log");
var fs = require("fs-extra");
var path = require("path");
var inquirer = require("inquirer");
var LZ = require("lz4");
var homedir = require("homedir");
var DB_PATH = path.resolve(homedir(), "./.gub_storage_db");
var readDB =
/*#__PURE__*/
function () {
var _ref = (0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee(path) {
var file;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return fs.readFile(path);
case 2:
file = _context.sent;
_context.prev = 3;
return _context.abrupt("return", JSON.parse(LZ.decode(file)));
case 7:
_context.prev = 7;
_context.t0 = _context["catch"](3);
return _context.abrupt("return", []);
case 10:
case "end":
return _context.stop();
}
}
}, _callee, null, [[3, 7]]);
}));
return function readDB(_x) {
return _ref.apply(this, arguments);
};
}();
var writeDB =
/*#__PURE__*/
function () {
var _ref2 = (0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee2(path, data) {
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return fs.writeFile(path, LZ.encode(JSON.stringify(data)));
case 2:
return _context2.abrupt("return", _context2.sent);
case 3:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return function writeDB(_x2, _x3) {
return _ref2.apply(this, arguments);
};
}();
var required = function required(input) {
if (input) return true;else return "This field is required";
};
var addAlias =
/*#__PURE__*/
function () {
var _ref3 = (0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee3(url, alias) {
var dataSource;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
if (!(!url || !alias)) {
_context3.next = 2;
break;
}
return _context3.abrupt("return");
case 2:
_context3.next = 4;
return fs.ensureFile(DB_PATH);
case 4:
_context3.next = 6;
return readDB(DB_PATH);
case 6:
dataSource = _context3.sent;
if (!dataSource.find(function (item) {
return item.url === url;
})) {
_context3.next = 9;
break;
}
return _context3.abrupt("return");
case 9:
if (Array.isArray(dataSource)) {
dataSource = dataSource.concat({
url: url,
alias: alias
});
} else {
dataSource = [{
url: url,
alias: alias
}];
}
_context3.next = 12;
return writeDB(DB_PATH, dataSource);
case 12:
return _context3.abrupt("return", _context3.sent);
case 13:
case "end":
return _context3.stop();
}
}
}, _callee3);
}));
return function addAlias(_x4, _x5) {
return _ref3.apply(this, arguments);
};
}();
exports.addAlias = addAlias;
var removeAlias =
/*#__PURE__*/
function () {
var _ref4 = (0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee4(key, alias) {
var dataSource;
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return fs.ensureFile(DB_PATH);
case 2:
_context4.next = 4;
return readDB(DB_PATH);
case 4:
dataSource = _context4.sent;
dataSource = dataSource.filter(function (item) {
return item.key === key && item.alias === alias;
});
_context4.next = 8;
return writeDB(DB_PATH, dataSource);
case 8:
return _context4.abrupt("return", _context4.sent);
case 9:
case "end":
return _context4.stop();
}
}
}, _callee4);
}));
return function removeAlias(_x6, _x7) {
return _ref4.apply(this, arguments);
};
}();
exports.removeAlias = removeAlias;
var getAliasList =
/*#__PURE__*/
function () {
var _ref5 = (0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee5() {
return _regenerator["default"].wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
_context5.next = 2;
return fs.ensureFile(DB_PATH);
case 2:
_context5.next = 4;
return readDB(DB_PATH);
case 4:
return _context5.abrupt("return", _context5.sent);
case 5:
case "end":
return _context5.stop();
}
}
}, _callee5);
}));
return function getAliasList() {
return _ref5.apply(this, arguments);
};
}();
exports.getAliasList = getAliasList;
var createAliasViewer =
/*#__PURE__*/
function () {
var _ref6 = (0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee6() {
var res;
return _regenerator["default"].wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
_context6.next = 2;
return inquirer.prompt([{
type: "input",
name: "url",
validate: required,
message: "Please input the repository url"
}, {
type: "input",
name: "alias",
validate: required,
message: "Please input an alias"
}]);
case 2:
res = _context6.sent;
_context6.next = 5;
return addAlias(res.url, res.alias);
case 5:
log.success("Successful operation!");
case 6:
case "end":
return _context6.stop();
}
}
}, _callee6);
}));
return function createAliasViewer() {
return _ref6.apply(this, arguments);
};
}();
exports.createAliasViewer = createAliasViewer;
var selectAliasViewer =
/*#__PURE__*/
function () {
var _ref7 = (0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee7() {
var dataSource, _ref8, alias;
return _regenerator["default"].wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
_context7.next = 2;
return getAliasList();
case 2:
dataSource = _context7.sent;
if (!(dataSource.length == 0)) {
_context7.next = 7;
break;
}
log.error("Alias not found, please create an alias first!");
process.exit(0);
return _context7.abrupt("return");
case 7:
_context7.next = 9;
return inquirer.prompt([{
type: "list",
name: "alias",
validate: required,
choices: dataSource.map(function (i) {
return i.alias;
}),
message: "Please select an alias"
}]);
case 9:
_ref8 = _context7.sent;
alias = _ref8.alias;
return _context7.abrupt("return", dataSource.filter(function (i) {
return i.alias === alias;
})[0].url);
case 12:
case "end":
return _context7.stop();
}
}
}, _callee7);
}));
return function selectAliasViewer() {
return _ref7.apply(this, arguments);
};
}();
exports.selectAliasViewer = selectAliasViewer;
var updateAliasViewer =
/*#__PURE__*/
function () {
var _ref9 = (0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee8() {
var dataSource, _ref10, alias, newDatasource, i, item, _item;
return _regenerator["default"].wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
case 0:
_context8.next = 2;
return getAliasList();
case 2:
dataSource = _context8.sent;
if (!(dataSource.length == 0)) {
_context8.next = 7;
break;
}
log.error("Alias not found, please create an alias first!");
process.exit(0);
return _context8.abrupt("return");
case 7:
_context8.next = 9;
return inquirer.prompt([{
type: "list",
name: "alias",
validate: required,
choices: dataSource.map(function (i) {
return i.alias + (" (" + i.url + ")");
}),
message: "Please select an alias"
}]);
case 9:
_ref10 = _context8.sent;
alias = _ref10.alias;
newDatasource = [];
i = 0;
case 13:
if (!(i < dataSource.length)) {
_context8.next = 26;
break;
}
item = dataSource[i];
if (!(alias.indexOf(item.alias) > -1)) {
_context8.next = 22;
break;
}
_context8.next = 18;
return inquirer.prompt([{
type: "input",
name: "url",
validate: required,
"default": item.url,
message: "Please input the repository url"
}, {
type: "input",
name: "alias",
validate: required,
"default": item.alias,
message: "Please input an alias"
}]);
case 18:
_item = _context8.sent;
newDatasource.push(_item);
_context8.next = 23;
break;
case 22:
newDatasource.push(item);
case 23:
i++;
_context8.next = 13;
break;
case 26:
_context8.next = 28;
return writeDB(DB_PATH, newDatasource);
case 28:
log.success("Successful operation!");
case 29:
case "end":
return _context8.stop();
}
}
}, _callee8);
}));
return function updateAliasViewer() {
return _ref9.apply(this, arguments);
};
}();
exports.updateAliasViewer = updateAliasViewer;
var removeAliasViewer =
/*#__PURE__*/
function () {
var _ref11 = (0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee9() {
var dataSource, _ref12, alias;
return _regenerator["default"].wrap(function _callee9$(_context9) {
while (1) {
switch (_context9.prev = _context9.next) {
case 0:
_context9.next = 2;
return getAliasList();
case 2:
dataSource = _context9.sent;
if (!(dataSource.length == 0)) {
_context9.next = 7;
break;
}
log.error("Alias not found, please create an alias first!");
process.exit(0);
return _context9.abrupt("return");
case 7:
_context9.next = 9;
return inquirer.prompt([{
type: "list",
name: "alias",
validate: required,
choices: dataSource.map(function (i) {
return i.alias + (" (" + i.url + ")");
}),
message: "Please select an alias"
}]);
case 9:
_ref12 = _context9.sent;
alias = _ref12.alias;
dataSource = dataSource.filter(function (i) {
return i.alias + (" (" + i.url + ")") !== alias;
});
_context9.next = 14;
return writeDB(DB_PATH, dataSource);
case 14:
log.success("Successful operation!");
case 15:
case "end":
return _context9.stop();
}
}
}, _callee9);
}));
return function removeAliasViewer() {
return _ref11.apply(this, arguments);
};
}();
exports.removeAliasViewer = removeAliasViewer;