UNPKG

bitbucket-env-manager

Version:

Deploys Bitbucket Environment

102 lines (79 loc) 2.38 kB
#!/usr/bin/env node const { text, note, spinner, isCancel, cancel, log } = require('@clack/prompts'); const fs = require('fs-extra'); const path = require('path'); const color = require('picocolors'); const { paths, names } = require('./config'); const { saveOauthEnvFile } = require('./helpers'); const runInit = async () => { note('Configure your Bitbucket OAuth credentials', 'Setup'); const OAUTH_CLIENT = await text({ message: 'Enter your OAuth Client ID', placeholder: 'xxxxxxxxxxxxxxx', validate: (value) => { if (!value) return 'OAuth Client ID is required'; }, }); if (isCancel(OAUTH_CLIENT)) { cancel('Setup cancelled.'); return; } const OAUTH_SECRET = await text({ message: 'Enter your OAuth Secret', placeholder: 'xxxxxxxxxxxxxxx', validate: (value) => { if (!value) return 'OAuth Secret is required'; }, }); if (isCancel(OAUTH_SECRET)) { cancel('Setup cancelled.'); return; } const WORKSPACE = await text({ message: 'Enter your Bitbucket Workspace', placeholder: 'my-workspace', validate: (value) => { if (!value) return 'Workspace is required'; }, }); if (isCancel(WORKSPACE)) { cancel('Setup cancelled.'); return; } const s = spinner(); s.start('Saving credentials'); saveOauthEnvFile({ OAUTH_CLIENT, OAUTH_SECRET, WORKSPACE }); s.stop(color.green('Credentials saved!')); }; const runGenerate = async () => { note('Generate a new project template', 'Generate'); const folderName = await text({ message: 'Choose a folder name', placeholder: names.generatedProjectFolder, defaultValue: names.generatedProjectFolder, }); if (isCancel(folderName)) { cancel('Generation cancelled.'); return; } if (!folderName) { throw new Error('No folder name provided'); } const mainFolderPath = path.join(process.cwd(), folderName); if (fs.existsSync(mainFolderPath)) { throw new Error('Folder already exists!'); } const s = spinner(); s.start('Creating project structure'); fs.mkdirSync(mainFolderPath); fs.copySync(paths.templateFolder, mainFolderPath); s.stop(color.green('Project created!')); note( `Configure ${color.cyan('project_envs/*/info.json')} with your\nBitbucket workspace and repo_slug`, 'Next Steps' ); }; module.exports = { runInit, runGenerate, };