UNPKG

alfy-to-arvish

Version:

Convert alfy workflow to arvish workflow (or vice versa)

98 lines (82 loc) 2.87 kB
const execa = require('execa'); const path = require('path'); const del = require('delete'); const fse = require('fs-extra'); const loudRejection = require('loud-rejection'); const latestVersion = require('latest-version'); const alfredToArvis = require('alfred-to-arvis').default; const arvisToAlfred = require('arvis-to-alfred').default; const { alfredToArvisCSV, arvisToAlfredCSV } = require('./path'); const copyCurrentProject = require('./copyProject'); loudRejection(); const execaOpt = { cwd: process.cwd() }; const alfyToArvish = async () => { return new Promise(async (resolve, reject) => { try { await alfredToArvis(path.resolve(process.cwd(), 'info.plist')); await copyCurrentProject('arvis'); await del.promise([ './arvis/info.plist', './arvis/arvis' ]); const replacerProc = execa('code-replacer', [ `--csv='${alfredToArvisCSV}'`, `--dir='./arvis'`, `--dst='arvis'`, `--overwrite`, `--template='\${source}->\${value}'`, ], execaOpt); replacerProc.stdout.pipe(process.stdout); replacerProc.then(async () => { const pkg = await fse.readJSON('./arvis/package.json'); pkg.dependencies.arvish = await latestVersion('arvish'); pkg.files && pkg.files.push('arvis-workflow.json') && pkg.files.splice(pkg.files.indexOf('info.plist'), 1); await fse.writeJSON('./arvis/package.json', pkg, { encoding: 'utf8', spaces: 2 }); resolve(); }); } catch (err) { reject(err); } }); }; const arvishToAlfy = async () => { return new Promise(async (resolve, reject) => { try { await arvisToAlfred(path.resolve(process.cwd(), 'arvis-workflow.json')) await copyCurrentProject('alfred'); await del.promise([ './alfred/arvis-workflow.json', './alfred/alfred' ]); const replacerProc = execa('code-replacer', [ `--csv='${arvisToAlfredCSV}'`, `--dir='./alfred'`, `--dst='alfred'`, `--overwrite`, `--template='\${source}->\${value}'`, ], execaOpt); replacerProc.stdout.pipe(process.stdout); replacerProc.then(async () => { const pkg = await fse.readJSON('./alfred/package.json'); // Avoid ESM pkg.dependencies.alfy = '^0.11.1'; pkg.scripts && pkg.scripts.prepublishOnly && delete pkg.scripts.prepublishOnly; pkg.files && pkg.files.push('info.plist') && pkg.files.splice(pkg.files.indexOf('alfred-workflow.json'), 1); await fse.writeJSON('./alfred/package.json', pkg, { encoding: 'utf8', spaces: 2 }); resolve(); }); } catch (err) { reject(err); } }); }; module.exports = async (flags) => { if (flags['invert']) { await arvishToAlfy(); } else { await alfyToArvish(); } console.log('Jobs done.'); };