UNPKG

@puls-atlas/cli

Version:

The Puls Atlas CLI tool for managing Atlas projects

51 lines 1.91 kB
import chalk from 'chalk'; import inquirer from 'inquirer'; import { logger, execSync, getFirebaserc, getTasksLocations } from './../../utils/index.js'; const QUEUES = ['puls-atlas-default', 'puls-atlas-message-center', 'puls-atlas-export-import']; const confirmCreate = async (projectId, queue) => { const keyStr = chalk.yellow(queue); const { create } = await inquirer.prompt([{ type: 'confirm', name: 'create', default: false, message: `Do you want to create the Task queue ${keyStr} ` + `for project ${chalk.yellow(projectId)}?` }]); if (create) { const locations = await getTasksLocations(projectId); const { location } = await inquirer.prompt([{ type: 'select', name: 'location', default: locations.find(loc => loc.startsWith('europe-west1')) || locations[0], message: `Select the region for the Task queue ${keyStr}.` + `\n${chalk.gray('Note:')} Choose the same region where ` + 'App Engine is deployed to reduce latency!', choices: locations }]); const spinner = logger.spinner(`Creating Task queue ${keyStr}...`); try { await execSync(`gcloud tasks queues create ${queue}`, { location: location.split(' ')[0].toLowerCase(), stdio: 'inherit', project: projectId }); } catch (error) { spinner.fail(`Failed to create task queue ${keyStr}: ${error.message}`); return Promise.resolve(); } spinner.succeed(`Task queue ${keyStr} created successfully.`); } return Promise.resolve(); }; export default async () => { const firebaserc = getFirebaserc(); if (!firebaserc.projects) { return Promise.reject('No projects found in .firebaserc'); } for await (const queue of QUEUES) { await confirmCreate(firebaserc.projects.production, queue); await confirmCreate(firebaserc.projects.development, queue); } return Promise.resolve(); };