@puls-atlas/cli
Version:
The Puls Atlas CLI tool for managing Atlas projects
50 lines • 2.19 kB
JavaScript
import chalk from 'chalk';
import inquirer from 'inquirer';
import { logger, execSync, getFirebaserc } 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 {
location
} = await inquirer.prompt([{
type: 'list',
name: 'location',
default: 'eur3',
message: `Select the region for the Firestore database ${keyStr}.` + `\n${chalk.gray('Note:')} Choose the same region where` + 'App Engine is deployed to reduce latency!',
choices: ['europe-west1 (Belgium)', 'europe-north1 (Finland)', 'europe-west2 (London)', 'europe-west3 (Frankfurt)', 'europe-west6 (Zurich)', 'us-central1 (Iowa)', 'us-east1 (South Carolina)', 'us-east4 (Northern Virginia)', 'us-west1 (Oregon)', 'northamerica-northeast1 (Montreal)', 'southamerica-east1 (Sao Paulo)', 'us-west2 (Los Angeles)', 'asia-northeast1 (Tokyo)', 'asia-southeast1 (Singapore)', 'australia-southeast1 (Sydney)']
}]);
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();
};