UNPKG

@puls-atlas/cli

Version:

The Puls Atlas CLI tool for managing Atlas projects

67 lines 2.33 kB
import inquirer from 'inquirer'; import { ensureAtlasArtifactBucket, resolveAtlasArtifactBucketName } from '../../utils/index.js'; import { getRequiredFirebasercProjects } from '../../utils/firebase.js'; import { logger } from '../../utils/logger.js'; export const confirmCreateArtifactBucket = async ({ ensureAtlasArtifactBucketImpl = ensureAtlasArtifactBucket, loggerImpl = logger, projectId, promptImpl = inquirer.prompt, resolveAtlasArtifactBucketNameImpl = resolveAtlasArtifactBucketName }) => { const bucketName = resolveAtlasArtifactBucketNameImpl(projectId); const { shouldCreate } = await promptImpl([{ type: 'confirm', name: 'shouldCreate', default: false, message: `Do you want to create the Atlas artifact bucket ${bucketName} for project ${projectId}?` }]); if (!shouldCreate) { return 'skipped'; } const spinner = loggerImpl.spinner(`Creating artifact bucket ${bucketName}...`); try { const result = ensureAtlasArtifactBucketImpl({ projectId }); if (result.status === 'existing') { spinner.succeed(`Artifact bucket ${bucketName} already exists.`); return 'existing'; } spinner.succeed(`Artifact bucket ${bucketName} created successfully.`); return 'created'; } catch (error) { spinner.fail(`Failed to create artifact bucket ${bucketName}: ${error.message}`); throw error; } }; export default async (dependencies = {}) => { const { ensureAtlasArtifactBucket: ensureAtlasArtifactBucketImpl = ensureAtlasArtifactBucket, getRequiredFirebasercProjects: getRequiredFirebasercProjectsImpl = getRequiredFirebasercProjects, logger: loggerImpl = logger, prompt: promptImpl = inquirer.prompt, resolveAtlasArtifactBucketName: resolveAtlasArtifactBucketNameImpl = resolveAtlasArtifactBucketName } = dependencies; const { developmentProjectId, productionProjectId } = getRequiredFirebasercProjectsImpl(); await confirmCreateArtifactBucket({ ensureAtlasArtifactBucketImpl, loggerImpl, projectId: productionProjectId, promptImpl, resolveAtlasArtifactBucketNameImpl }); await confirmCreateArtifactBucket({ ensureAtlasArtifactBucketImpl, loggerImpl, projectId: developmentProjectId, promptImpl, resolveAtlasArtifactBucketNameImpl }); return true; };