diff --git a/.pnp.js b/.pnp.js index dbe8f2c..a377def 100755 --- a/.pnp.js +++ b/.pnp.js @@ -42,7 +42,8 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["got", "npm:11.8.2"], ["jest", "npm:26.6.3"], ["jsdom", "virtual:defa486869c88441047200a53b3aa18d79743b272095f3ee31b5b7b80b2c93d87f722added867470dcb94104504489a1a89040ea8fd89dffb9cfb1864d4bf54e#npm:16.5.2"], - ["md5", "npm:2.3.0"] + ["md5", "npm:2.3.0"], + ["minimist", "npm:1.2.5"] ], "linkType": "SOFT", }] @@ -4754,7 +4755,8 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["got", "npm:11.8.2"], ["jest", "npm:26.6.3"], ["jsdom", "virtual:defa486869c88441047200a53b3aa18d79743b272095f3ee31b5b7b80b2c93d87f722added867470dcb94104504489a1a89040ea8fd89dffb9cfb1864d4bf54e#npm:16.5.2"], - ["md5", "npm:2.3.0"] + ["md5", "npm:2.3.0"], + ["minimist", "npm:1.2.5"] ], "linkType": "SOFT", }] diff --git a/package.json b/package.json index ef02303..c7a05d2 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "form-data": "^4.0.0", "got": "^11.8.2", "jsdom": "^16.5.2", - "md5": "^2.3.0" + "md5": "^2.3.0", + "minimist": "^1.2.5" } } diff --git a/src/chat.js b/src/chat.js index a576d22..2244fb8 100644 --- a/src/chat.js +++ b/src/chat.js @@ -1,4 +1,6 @@ +const args = require('minimist')(process.argv.slice(2)); + // the main juice const { buddies } = require('./config') @@ -6,18 +8,44 @@ if(!buddies) throw "Did you seutp your config?" const { toot } = require('./toot'); -(async function() { - for await(buddyConfig of buddies) { - console.log(`bootstrapping chat for ${buddyConfig.name}...`) - const { chat } = require(`./buddies/${buddyConfig.name}/buddy`) - - // contains 'toot', and maybe 'attach' / 'attachDescription' - const message = await chat(buddyConfig) - console.log(`buddy ${buddyConfig.name} has this to say: ${JSON.stringify(message)}`) +function assertBuddyConfigCorrect(buddyConfig) { + const errs = [] + if(!buddyConfig.name) errs.push("No 'name' property found") + if(!buddyConfig.instance) errs.push("No 'instance' property found") + if(!buddyConfig.oauthToken) errs.push("No 'oauthToken' property found") - await toot(message, buddyConfig) + if(errs.length > 0) { + console.error(`Whoops, a buddy is misconfigured: ${errs.join(', ')}. Exiting.`) + process.exit(-1) + } +} + +async function letBuddyChat(buddyConfig) { + //assertBuddyConfigCorrect(buddyConfig) + console.log(`bootstrapping chat for ${buddyConfig.name}...`) + const { chat } = require(`./buddies/${buddyConfig.name}/buddy`) + + // contains 'toot', and maybe 'attach' / 'attachDescription' + const message = await chat(buddyConfig) + console.log(`buddy ${buddyConfig.name} has this to say: ${JSON.stringify(message)}`) + + //await toot(message, buddyConfig) +} + +(async function() { + if(args.buddy) { + const config = buddies.find(b => b.name === args.buddy) + if(!config) { + console.error(`Whoops, you asked to let buddy "${args.buddy}" chat, but no config found? Exiting.`) + process.exit(-1) + } + + await letBuddyChat(config) + } else { + for await(buddyConfig of buddies) { + await letBuddyChat(buddyConfig) + } } console.log('Done! for now... ') })() - diff --git a/yarn.lock b/yarn.lock index 0a300dd..c8f185c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4040,6 +4040,7 @@ fsevents@^2.1.2: jest: ^26.6.3 jsdom: ^16.5.2 md5: ^2.3.0 + minimist: ^1.2.5 languageName: unknown linkType: soft