UNPKG

@spot-meetings/code-style

Version:

Spot's Code Style guide (ESLint, Prettier)

102 lines (83 loc) 2.2 kB
#!/usr/bin/env node /* eslint-disable no-console */ const readline = require('readline') const path = require('path') const fs = require('fs') const rl = readline.createInterface({ output: process.stdout, input: process.stdin, }) const question = (message) => new Promise((resolve) => { rl.question(message, resolve) }) const writeDefaultConfigs = () => { console.log('Writing default configs...') try { fs.writeFileSync( '.eslintrc', `${JSON.stringify( { extends: '@spot-meetings/eslint-config/javascript', }, null, 2, )}\n`, ) fs.writeFileSync( '.prettierrc.js', `module.exports = require('@spot-meetings/code-style/prettier')\n`, ) } catch (err) { console.error(err) } } const writeSourceConfigs = (src) => { console.log(`Writing TypeScript config on "${src}"...`) try { // eslint-disable-next-line security/detect-non-literal-fs-filename fs.writeFileSync( path.join(src, '.eslintrc'), `${JSON.stringify( { extends: '@spot-meetings/eslint-config/typescript', parserOptions: { project: './tsconfig.json', }, }, null, 2, )}\n`, ) } catch (err) { console.error(err) } } const main = async () => { const shouldWriteBaseConfigs = await question( 'Overwrite any existing .eslintrc and .prettier.js files with the default configs? (Y/n) ', ) if (!shouldWriteBaseConfigs || /y/i.test(shouldWriteBaseConfigs)) { writeDefaultConfigs() } else { console.log('Skipping base configs install.') } const shouldWriteSourceConfigs = await question( 'Add TypeScript config to your source folder? (Y/n) ', ) if (!shouldWriteSourceConfigs || /y/i.test(shouldWriteSourceConfigs)) { const src = await question('[CAUTION!] Enter your source folder: ') if (!src) { console.warn('No source folder was entered. Skipping.') } writeSourceConfigs(src) } else { console.log('Skipping source config install.') } rl.on('close', () => { console.log('\nHappy coding!') process.exit(0) }) rl.close() } main()