const readline = require('readline'); const fs = require('fs'); const cp = require('child_process'); const rl = readline.createInterface({input: process.stdin, output: process.stdout}); const input = async question => {return new Promise(r => {rl.question(question, (ans) => {r(ans);});});}; let cl = {}; let v; const ask = async () => { const addGroup = async () => { let conf = await input("\nWould you like to add a new group? "); if (['y', 'ye', 'yes', 'sure'].includes(conf.trim().toLowerCase())) { let gn = await input("What is the group's name? "); cl[gn] = []; const addItem = async () => { let item = await input("Add an item: "); if (!['done', ''].includes(item.trim().toLowerCase())) { cl[gn].push(item); await addItem(); } }; await addItem(); await addGroup(); } }; v = await input('What version are you making a changelog for? '); await addGroup(); fs.writeFileSync(`./json/changelogs/${v.trim().toLowerCase()}.json`, JSON.stringify({log: cl, version: {name: "Alpha", semver: v}})); await input("I've made the changelog for you! Press enter when you're ready to create the release tag."); let msg = await input('What would you like the commit message to be? '); console.log(''); cp.exec('git add .', () => { console.log('Staged working directory.\n'); cp.exec(`npm version ${v.trim().toLowerCase()} -f -m "%s -> ${msg}"`, function(error, stdout, stderr) { if (error) {console.error(error);} if (stdout) {console.log(stdout);} if (stdout) {console.log(stderr);} }); }); console.log('\nDone!'); }; ask();