UNPKG

@puls-atlas/cli

Version:

The Puls Atlas CLI tool for managing Atlas projects

51 lines 1.56 kB
import chalk from 'chalk'; import inquirer from 'inquirer'; import { logger, createSecret, getFirebaserc } from './../../utils/index.js'; const SECRETS = [{ key: 'puls-atlas-api-key', value: () => uid(16) }, { key: 'puls-atlas-jwt', value: () => uid(32) }]; const uid = (length = 8) => { const chars = 'abcdefghijklmnopqrstuvwxyz0123456789'; let str = ''; for (let i = 0; i < length; i++) { str += chars.charAt(Math.floor(Math.random() * chars.length)); } return str; }; const confirmCreate = async (projectId, key, secret) => { const { create } = await inquirer.prompt([{ type: 'confirm', name: 'create', default: false, message: `Do you want to create the secret ${chalk.yellow(key)} ` + `for project ${chalk.yellow(projectId)}?` }]); if (create) { const keyStr = chalk.yellow(key); const spinner = logger.spinner(`Creating secret ${keyStr}...`); await createSecret(key, secret, projectId).then(() => { spinner.succeed(`Secret ${keyStr} created successfully.`); }).catch(error => { spinner.warn(`Secret ${keyStr} creation failed: ${error.message}` ?? 'Unknown error'); }); } }; export default async () => { const firebaserc = getFirebaserc(); if (!firebaserc.projects) { return Promise.reject('No projects found in .firebaserc'); } for await (const { key, value } of SECRETS) { await confirmCreate(firebaserc.projects.production, key, value()); await confirmCreate(firebaserc.projects.development, key, value()); } return Promise.resolve(); };