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