| | |
| | |
| | |
| | |
| | const fs = require('fs'); |
| | const path = require('path'); |
| | const readline = require('readline'); |
| | const { execSync } = require('child_process'); |
| |
|
| | const askQuestion = (query) => { |
| | const rl = readline.createInterface({ |
| | input: process.stdin, |
| | output: process.stdout, |
| | }); |
| |
|
| | return new Promise((resolve) => |
| | rl.question('\x1b[36m' + query + '\n> ' + '\x1b[0m', (ans) => { |
| | rl.close(); |
| | resolve(ans); |
| | }), |
| | ); |
| | }; |
| |
|
| | const askMultiLineQuestion = (query) => { |
| | const rl = readline.createInterface({ |
| | input: process.stdin, |
| | output: process.stdout, |
| | }); |
| |
|
| | console.cyan(query); |
| |
|
| | return new Promise((resolve) => { |
| | let lines = []; |
| | rl.on('line', (line) => { |
| | if (line.trim() === '.') { |
| | rl.close(); |
| | resolve(lines.join('\n')); |
| | } else { |
| | lines.push(line); |
| | } |
| | }); |
| | }); |
| | }; |
| |
|
| | function isDockerRunning() { |
| | try { |
| | execSync('docker info'); |
| | return true; |
| | } catch (e) { |
| | return false; |
| | } |
| | } |
| |
|
| | function deleteNodeModules(dir) { |
| | const nodeModulesPath = path.join(dir, 'node_modules'); |
| | if (fs.existsSync(nodeModulesPath)) { |
| | console.purple(`Deleting node_modules in ${dir}`); |
| | fs.rmSync(nodeModulesPath, { recursive: true }); |
| | } |
| | } |
| |
|
| | const silentExit = (code = 0) => { |
| | console.log = () => {}; |
| | process.exit(code); |
| | }; |
| |
|
| | |
| | console.orange = (msg) => console.log('\x1b[33m%s\x1b[0m', msg); |
| | console.green = (msg) => console.log('\x1b[32m%s\x1b[0m', msg); |
| | console.red = (msg) => console.log('\x1b[31m%s\x1b[0m', msg); |
| | console.blue = (msg) => console.log('\x1b[34m%s\x1b[0m', msg); |
| | console.purple = (msg) => console.log('\x1b[35m%s\x1b[0m', msg); |
| | console.cyan = (msg) => console.log('\x1b[36m%s\x1b[0m', msg); |
| | console.yellow = (msg) => console.log('\x1b[33m%s\x1b[0m', msg); |
| | console.white = (msg) => console.log('\x1b[37m%s\x1b[0m', msg); |
| | console.gray = (msg) => console.log('\x1b[90m%s\x1b[0m', msg); |
| |
|
| | module.exports = { |
| | askQuestion, |
| | askMultiLineQuestion, |
| | silentExit, |
| | isDockerRunning, |
| | deleteNodeModules, |
| | }; |
| |
|