@puls-atlas/cli
Version:
The Puls Atlas CLI tool for managing Atlas projects
51 lines • 1.56 kB
JavaScript
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();
};