UNPKG

@ably/cli

Version:

Ably CLI for Pub/Sub, Chat and Spaces

78 lines (77 loc) 3.2 kB
import { Flags } from "@oclif/core"; import { ControlBaseCommand } from "../../control-base-command.js"; export default class QueuesCreateCommand extends ControlBaseCommand { static description = "Create a queue"; static examples = [ '$ ably queues create --name "my-queue"', '$ ably queues create --name "my-queue" --ttl 3600 --max-length 100000', '$ ably queues create --name "my-queue" --region "eu-west-1-a" --app "My App"', ]; static flags = { ...ControlBaseCommand.globalFlags, app: Flags.string({ description: "App ID or name to create the queue in", required: false, }), "max-length": Flags.integer({ default: 10_000, description: "Maximum number of messages in the queue", required: false, }), name: Flags.string({ description: "Name of the queue", required: true, }), region: Flags.string({ default: "us-east-1-a", description: "Region for the queue", required: false, }), ttl: Flags.integer({ default: 60, description: "Time to live for messages in seconds", required: false, }), }; async run() { const { flags } = await this.parse(QueuesCreateCommand); const controlApi = this.createControlApi(flags); try { // Get app ID from flags or config const appId = await this.resolveAppId(flags); if (!appId) { this.error('No app specified. Use --app flag or select an app with "ably apps switch"'); return; } const queueData = { maxLength: flags["max-length"], name: flags.name, region: flags.region, ttl: flags.ttl, }; const createdQueue = await controlApi.createQueue(appId, queueData); if (this.shouldOutputJson(flags)) { this.log(this.formatJsonOutput(structuredClone(createdQueue), flags)); } else { this.log("Queue created successfully:"); this.log(`Queue ID: ${createdQueue.id}`); this.log(`Name: ${createdQueue.name}`); this.log(`Region: ${createdQueue.region}`); this.log(`TTL: ${createdQueue.ttl} seconds`); this.log(`Max Length: ${createdQueue.maxLength} messages`); this.log(`State: ${createdQueue.state}`); this.log(`\nAMQP Connection Details:`); this.log(`URI: ${createdQueue.amqp.uri}`); this.log(`Queue Name: ${createdQueue.amqp.queueName}`); this.log(`\nSTOMP Connection Details:`); this.log(`URI: ${createdQueue.stomp.uri}`); this.log(`Host: ${createdQueue.stomp.host}`); this.log(`Destination: ${createdQueue.stomp.destination}`); } } catch (error) { this.error(`Error creating queue: ${error instanceof Error ? error.message : String(error)}`); } } }