astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
101 lines (80 loc) • 3.92 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _fsExtra = _interopRequireDefault(require("fs-extra"));
var _dedentJs = _interopRequireDefault(require("dedent-js"));
var _inquirer = _interopRequireDefault(require("inquirer"));
var _templateObject, _templateObject2;
var init = {
command: 'init [file]',
describe: 'create a transform file',
builder: function builder(yargs) {
return yargs.positional('file', {
describe: "name of the transform file to create",
type: 'string',
"default": 'astx.js'
}).option('style', {
alias: 's',
type: 'string',
choices: ['find-replace', 'function']
});
},
handler: function () {
var _handler = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_ref) {
var _ref$file, file, style, _yield$inquirer$promp, content;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_ref$file = _ref.file, file = _ref$file === void 0 ? 'astx.js' : _ref$file, style = _ref.style;
_context.next = 3;
return _fsExtra["default"].pathExists(file);
case 3:
if (!_context.sent) {
_context.next = 6;
break;
}
console.error("Path already exists: ".concat(/^[./]/.test(file) ? file : './' + file));
process.exit(1);
case 6:
if (style) {
_context.next = 12;
break;
}
;
_context.next = 10;
return _inquirer["default"].prompt([{
name: 'style',
type: 'list',
choices: ['find-replace', 'function']
}]);
case 10:
_yield$inquirer$promp = _context.sent;
style = _yield$inquirer$promp.style;
case 12:
content = style === 'function' ? (0, _dedentJs["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n exports.astx = ({ astx, t, expression, statement, statements, report }) => {\n // example: astx.find`$foo`().replace`$foo`()\n }\n "], ["\n exports.astx = ({ astx, t, expression, statement, statements, report }) => {\n // example: astx.find\\`$foo\\`().replace\\`$foo\\`()\n }\n "]))) : (0, _dedentJs["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n exports.find = `\n\n ` \n\n exports.where = {\n \n }\n\n exports.replace = `\n\n `\n "], ["\n exports.find = \\`\n\n \\` \n\n exports.where = {\n \n }\n\n exports.replace = \\`\n\n \\`\n "])));
_context.next = 15;
return _fsExtra["default"].writeFile(file, content, 'utf8');
case 15:
console.error("Wrote ".concat(/^[./]/.test(file) ? file : './' + file));
case 16:
case "end":
return _context.stop();
}
}
}, _callee);
}));
function handler(_x) {
return _handler.apply(this, arguments);
}
return handler;
}()
};
var _default = init;
exports["default"] = _default;