diff --git a/src/cli.js b/src/cli.js index 3776ee3..f4e36c8 100644 --- a/src/cli.js +++ b/src/cli.js @@ -1,13 +1,32 @@ const { Command } = require('commander'); -const program = new Command(); +const { buildDependencies } = require('./dependencies'); -const createAppInviteCommand = require('./commands/createAppInvite'); +function buildCLIDependencies() { + const appDependencies = buildDependencies(); -program.version('1.0.0').description('CLI for managing web app tasks'); + const CreateAppInviteProvider = require('./commands/createAppInvite'); + const createAppInvite = new CreateAppInviteProvider({ + nostrService: appDependencies.services.nostrService, + invitesService: appDependencies.services.invitesService, + }).provide(); -program - .command('createAppInvite ') - .description('Create an invite') - .action(createAppInviteCommand); + return { createAppInviteCommand: createAppInvite }; +} -program.parse(process.argv); +function buildCLI({ createAppInviteCommand }) { + const wipCli = new Command(); + wipCli.version('1.0.0').description('CLI for managing web app tasks'); + + wipCli + .command('createAppInvite ') + .description('Create an invite') + .action(createAppInviteCommand); + + return wipCli; +} + +const cliDependencies = buildCLIDependencies(); + +const cli = buildCLI(cliDependencies); + +cli.parse(process.argv); diff --git a/src/commands/createAppInvite.js b/src/commands/createAppInvite.js index 6b36583..1a7c41b 100644 --- a/src/commands/createAppInvite.js +++ b/src/commands/createAppInvite.js @@ -5,8 +5,21 @@ const invitesService = new InvitesServiceProvider({ nostrService, }).provide(); -module.exports = async function createAppInvite(inviterNpub) { - const appInvite = await invitesService.createAppInvite(inviterNpub); - console.log('Invite created'); - console.log(`Check at http://localhost/invite/${appInvite.uuid}`); -}; +class CreateAppInviteProvider { + constructor({ nostrService, invitesService }) { + this.nostrService = nostrService; + this.invitesService = invitesService; + } + + provide() { + const createAppInvite = async (inviterNpub) => { + const appInvite = await invitesService.createAppInvite(inviterNpub); + console.log('Invite created'); + console.log(`Check at http://localhost/invite/${appInvite.uuid}`); + }; + + return createAppInvite; + } +} + +module.exports = CreateAppInviteProvider; diff --git a/src/dependencies.js b/src/dependencies.js index 5b3e4c7..ce71d18 100644 --- a/src/dependencies.js +++ b/src/dependencies.js @@ -7,6 +7,7 @@ function buildDependencies() { const ServicesProvider = require('./services'); const services = new ServicesProvider().provide(); + dependencies.services = services; const MiddlewaresProvider = require('./middlewares'); const middlewares = new MiddlewaresProvider({