UNPKG

astx

Version:

super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring

67 lines (55 loc) 5.97 kB
import fs from 'fs-extra' import dedent from 'dedent-js' import inquirer from 'inquirer' /* eslint-disable no-console */ const init = { command: 'init [file]', describe: 'create a transform file', builder: (yargs) => 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: async ({ file = 'astx.js', style }) => { if (await fs.pathExists(file)) { console.error( `Path already exists: ${/^[./]/.test(file) ? file : './' + file}` ) process.exit(1) } if (!style) { ;({ style } = await inquirer.prompt([ { name: 'style', type: 'list', choices: ['find-replace', 'function'], }, ])) } const content = style === 'function' ? dedent` exports.astx = ({ astx, t, expression, statement, statements, report }) => { // example: astx.find\`$foo\`().replace\`$foo\`() } ` : dedent` exports.find = \` \` exports.where = { } exports.replace = \` \` ` await fs.writeFile(file, content, 'utf8') console.error(`Wrote ${/^[./]/.test(file) ? file : './' + file}`) }, } export default init //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImRlZGVudCIsImlucXVpcmVyIiwiaW5pdCIsImNvbW1hbmQiLCJkZXNjcmliZSIsImJ1aWxkZXIiLCJ5YXJncyIsInBvc2l0aW9uYWwiLCJ0eXBlIiwiZGVmYXVsdCIsIm9wdGlvbiIsImFsaWFzIiwiY2hvaWNlcyIsImhhbmRsZXIiLCJmaWxlIiwic3R5bGUiLCJwYXRoRXhpc3RzIiwiY29uc29sZSIsImVycm9yIiwidGVzdCIsInByb2Nlc3MiLCJleGl0IiwicHJvbXB0IiwibmFtZSIsImNvbnRlbnQiLCJ3cml0ZUZpbGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2luaXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJndW1lbnRzLCBBcmd2LCBDb21tYW5kTW9kdWxlIH0gZnJvbSAneWFyZ3MnXG5pbXBvcnQgZnMgZnJvbSAnZnMtZXh0cmEnXG5pbXBvcnQgZGVkZW50IGZyb20gJ2RlZGVudC1qcydcbmltcG9ydCBpbnF1aXJlciBmcm9tICdpbnF1aXJlcidcblxuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuXG50eXBlIE9wdGlvbnMgPSB7XG4gIGZpbGU/OiBzdHJpbmdcbiAgc3R5bGU/OiBzdHJpbmdcbn1cblxuY29uc3QgaW5pdDogQ29tbWFuZE1vZHVsZTxPcHRpb25zPiA9IHtcbiAgY29tbWFuZDogJ2luaXQgW2ZpbGVdJyxcbiAgZGVzY3JpYmU6ICdjcmVhdGUgYSB0cmFuc2Zvcm0gZmlsZScsXG4gIGJ1aWxkZXI6ICh5YXJnczogQXJndjxPcHRpb25zPikgPT5cbiAgICB5YXJnc1xuICAgICAgLnBvc2l0aW9uYWwoJ2ZpbGUnLCB7XG4gICAgICAgIGRlc2NyaWJlOiBgbmFtZSBvZiB0aGUgdHJhbnNmb3JtIGZpbGUgdG8gY3JlYXRlYCxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlZmF1bHQ6ICdhc3R4LmpzJyxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCdzdHlsZScsIHtcbiAgICAgICAgYWxpYXM6ICdzJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGNob2ljZXM6IFsnZmluZC1yZXBsYWNlJywgJ2Z1bmN0aW9uJ10sXG4gICAgICB9KSxcbiAgaGFuZGxlcjogYXN5bmMgKHtcbiAgICBmaWxlID0gJ2FzdHguanMnLFxuICAgIHN0eWxlLFxuICB9OiBBcmd1bWVudHM8T3B0aW9ucz4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAoYXdhaXQgZnMucGF0aEV4aXN0cyhmaWxlKSkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFBhdGggYWxyZWFkeSBleGlzdHM6ICR7L15bLi9dLy50ZXN0KGZpbGUpID8gZmlsZSA6ICcuLycgKyBmaWxlfWBcbiAgICAgIClcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH1cbiAgICBpZiAoIXN0eWxlKSB7XG4gICAgICA7KHsgc3R5bGUgfSA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnc3R5bGUnLFxuICAgICAgICAgIHR5cGU6ICdsaXN0JyxcbiAgICAgICAgICBjaG9pY2VzOiBbJ2ZpbmQtcmVwbGFjZScsICdmdW5jdGlvbiddLFxuICAgICAgICB9LFxuICAgICAgXSkpXG4gICAgfVxuICAgIGNvbnN0IGNvbnRlbnQgPVxuICAgICAgc3R5bGUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBkZWRlbnRgXG4gICAgICAgICAgZXhwb3J0cy5hc3R4ID0gKHsgYXN0eCwgdCwgZXhwcmVzc2lvbiwgc3RhdGVtZW50LCBzdGF0ZW1lbnRzLCByZXBvcnQgfSkgPT4ge1xuICAgICAgICAgICAgLy8gZXhhbXBsZTogYXN0eC5maW5kXFxgJGZvb1xcYCgpLnJlcGxhY2VcXGAkZm9vXFxgKClcbiAgICAgICAgICB9XG4gICAgICAgIGBcbiAgICAgICAgOiBkZWRlbnRgXG4gICAgICAgICAgZXhwb3J0cy5maW5kID0gXFxgXG5cbiAgICAgICAgICBcXGAgXG5cbiAgICAgICAgICBleHBvcnRzLndoZXJlID0ge1xuICAgICAgICAgIFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGV4cG9ydHMucmVwbGFjZSA9IFxcYFxuXG4gICAgICAgICAgXFxgXG4gICAgICAgIGBcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUoZmlsZSwgY29udGVudCwgJ3V0ZjgnKVxuICAgIGNvbnNvbGUuZXJyb3IoYFdyb3RlICR7L15bLi9dLy50ZXN0KGZpbGUpID8gZmlsZSA6ICcuLycgKyBmaWxlfWApXG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGluaXRcbiJdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU9BLEVBQVAsTUFBZSxVQUFmO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixXQUFuQjtBQUNBLE9BQU9DLFFBQVAsTUFBcUIsVUFBckI7O0FBRUE7Ozs7Ozs7QUFPQSxNQUFNQyxJQUE0QixHQUFHO0VBQ25DQyxPQUFPLEVBQUUsYUFEMEI7RUFFbkNDLFFBQVEsRUFBRSx5QkFGeUI7RUFHbkNDLE9BQU8sRUFBRSxDQUFDQyxLQUFEO0VBQ1BBLEtBQUs7RUFDRkMsVUFESCxDQUNjLE1BRGQsRUFDc0I7SUFDbEJILFFBQVEsRUFBRyxzQ0FETztJQUVsQkksSUFBSSxFQUFFLFFBRlk7SUFHbEJDLE9BQU8sRUFBRSxTQUhTLEVBRHRCOztFQU1HQyxNQU5ILENBTVUsT0FOVixFQU1tQjtJQUNmQyxLQUFLLEVBQUUsR0FEUTtJQUVmSCxJQUFJLEVBQUUsUUFGUztJQUdmSSxPQUFPLEVBQUUsQ0FBQyxjQUFELEVBQWlCLFVBQWpCLENBSE0sRUFObkIsQ0FKaUM7O0VBZW5DQyxPQUFPLEVBQUUsT0FBTztJQUNkQyxJQUFJLEdBQUcsU0FETztJQUVkQyxLQUZjLEVBQVA7RUFHZ0M7SUFDdkMsSUFBSSxNQUFNaEIsRUFBRSxDQUFDaUIsVUFBSCxDQUFjRixJQUFkLENBQVYsRUFBK0I7TUFDN0JHLE9BQU8sQ0FBQ0MsS0FBUjtNQUNHLHdCQUF1QixRQUFRQyxJQUFSLENBQWFMLElBQWIsSUFBcUJBLElBQXJCLEdBQTRCLE9BQU9BLElBQUssRUFEbEU7O01BR0FNLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLENBQWI7SUFDRDtJQUNELElBQUksQ0FBQ04sS0FBTCxFQUFZO01BQ1YsQ0FBQyxDQUFDLEVBQUVBLEtBQUYsS0FBWSxNQUFNZCxRQUFRLENBQUNxQixNQUFULENBQWdCO01BQ2xDO1FBQ0VDLElBQUksRUFBRSxPQURSO1FBRUVmLElBQUksRUFBRSxNQUZSO1FBR0VJLE9BQU8sRUFBRSxDQUFDLGNBQUQsRUFBaUIsVUFBakIsQ0FIWCxFQURrQyxDQUFoQixDQUFuQjs7O0lBT0Y7SUFDRCxNQUFNWSxPQUFPO0lBQ1hULEtBQUssS0FBSyxVQUFWO0lBQ0lmLE1BQU87QUFDakI7QUFDQTtBQUNBO0FBQ0EsU0FMTTtJQU1JQSxNQUFPO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQW5CSTtJQW9CQSxNQUFNRCxFQUFFLENBQUMwQixTQUFILENBQWFYLElBQWIsRUFBbUJVLE9BQW5CLEVBQTRCLE1BQTVCLENBQU47SUFDQVAsT0FBTyxDQUFDQyxLQUFSLENBQWUsU0FBUSxRQUFRQyxJQUFSLENBQWFMLElBQWIsSUFBcUJBLElBQXJCLEdBQTRCLE9BQU9BLElBQUssRUFBL0Q7RUFDRCxDQXhEa0MsRUFBckM7OztBQTJEQSxlQUFlWixJQUFmIn0=