UNPKG

google-local-pubsub-cli

Version:

cli for google cloud pubsub emulator. managing topics and subscriptions

66 lines (53 loc) 1.55 kB
import path from 'path'; import { Argv } from 'mri'; import { createPubSub } from '../pubsub'; import { TopicMetadata } from '@google-cloud/pubsub'; const ALREADY_EXISTS = 6; export async function topics(argv: Argv) { process.stdout.write(` topics execution \n`); if (argv.help || argv.h) { process.stdout.write(` Usage: glpubsub topics <COMMAND> \n`); process.exit(0); } const client = createPubSub(argv.project ?? argv.p); if (argv.config || argv.c) { process.stdout.write(` create topic from configure file(json) \n`); const loadPath = path.join(process.cwd(), argv.config ?? argv.c); const metas = require(loadPath) as TopicMetadata[]; console.log(metas); const errors: any[] = []; const results = await Promise.all( metas.map(async (meta) => { try { const res = await client.createTopic(meta); console.info(`Topic "${meta.name}" created.`); return res; } catch (err: any) { if (err.code === ALREADY_EXISTS) { console.info(`Topic "${meta.name}" already exists.`); errors.push(`Topic "${meta.name}" already exists.`); } else { console.log(err); } } }) ); if (errors.length > 0) { console.log('has errors', errors); process.exit(1); } console.log('results', results); process.exit(0); } const topics = await client.getTopics(); console.log('list topics: ##############'); console.dir(topics); process.exit(0); }