UNPKG

runok

Version:

NPM scripts on steroids! Replace your scripts with pure JS

61 lines (49 loc) 1.49 kB
#!/usr/bin/env node const path = require('path'); const fileName = path.join(process.cwd(), 'runok.js'); const runok = require('../dist/command'); const signale = require('signale'); const fs = require('fs'); let runokFile; try { runokFile = require(fileName); } catch (err) { if (process.argv.pop() === 'init') { if (initFn()) return; } if (process.argv.pop() === 'export') { if (exportFn()) return; } signale.fatal(err); signale.fatal(`File ${fileName} is not available.\n Create one and export functions for commands`); process.exit(1); } if (process.versions.node && process.versions.node.split('.') && process.versions.node.split('.')[0] < 8) { error('NodeJS >= 8 is required to run.'); print(); print('Please upgrade your NodeJS engine'); print(`Current NodeJS version: ${process.version}`); process.exit(1); } runok(runokFile); function initFn() { if (fs.existsSync('runok.js')) { signale.note('runok.js file already exists, nothing to init. Just use it.'); return false; } fs.writeFileSync('runok.js', `#!/usr/bin/env node const { runok, tasks: { exec } } = require('runok'); module.exports = { async helloWorld() { console.log('hello world'); } } if (require.main === module) runok(module.exports); ` ); fs.chmodSync('runok.js', 0o775); signale.info('runok.js file created. Each exported function will be a command'); signale.info('Execute this file via "./runok.js" or "npx runok"'); return true; }