UNPKG

@puls-atlas/cli

Version:

The Puls Atlas CLI tool for managing Atlas projects

84 lines 2.38 kB
import inquirer from 'inquirer'; import { Firestore } from '@google-cloud/firestore'; import { getRequiredFirebasercProjects } from '../../utils/firebase.js'; import { logger } from '../../utils/logger.js'; const DEFAULT_ROLES = [{ id: 'admin', data: { value: 'admin', label: { 'nl-BE': 'Beheerder', 'en-US': 'Administrator' } } }, { id: 'user', data: { value: 'user', label: { 'nl-BE': 'Gebruiker', 'en-US': 'User' } } }]; const createFirestoreClient = options => new Firestore(options); export const confirmCreateDefaultRoles = async ({ createFirestoreClientImpl = createFirestoreClient, loggerImpl = logger, projectId, promptImpl = inquirer.prompt }) => { const { shouldCreate } = await promptImpl([{ type: 'confirm', name: 'shouldCreate', default: true, message: 'Do you want to add the default `admin` and `user` role to the `roles` collection ' + `in project ${projectId}?` }]); if (!shouldCreate) { return 'skipped'; } const spinner = loggerImpl.spinner(`Adding default roles in project ${projectId}...`); const firestore = createFirestoreClientImpl({ projectId }); const rolesCollection = firestore.collection('roles'); const batch = firestore.batch(); for (const role of DEFAULT_ROLES) { batch.set(rolesCollection.doc(role.id), role.data); } try { await batch.commit(); spinner.succeed(`Default roles added successfully in project ${projectId}.`); return 'created'; } catch (error) { spinner.fail(`Failed to add default roles in project ${projectId}: ${error.message}`); throw error; } }; export default async (dependencies = {}) => { const { createFirestoreClient: createFirestoreClientImpl = createFirestoreClient, getRequiredFirebasercProjects: getRequiredFirebasercProjectsImpl = getRequiredFirebasercProjects, logger: loggerImpl = logger, prompt: promptImpl = inquirer.prompt } = dependencies; const { developmentProjectId, productionProjectId } = getRequiredFirebasercProjectsImpl(); await confirmCreateDefaultRoles({ createFirestoreClientImpl, loggerImpl, projectId: developmentProjectId, promptImpl }); await confirmCreateDefaultRoles({ createFirestoreClientImpl, loggerImpl, projectId: productionProjectId, promptImpl }); return true; };