pr-sizewise
Version:
A CLI tool that measures and reports pull request sizes for GitHub and GitLab, helping teams maintain manageable code changes.
80 lines • 3.11 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.runConfigWizard = runConfigWizard;
const inquirer_1 = __importDefault(require("inquirer"));
const path_1 = __importDefault(require("path"));
const fs_1 = __importDefault(require("fs"));
const index_1 = require("../index");
const logger_1 = require("../utils/logger");
const logger = (0, logger_1.createDefaultLogger)();
async function runConfigWizard() {
logger.blank();
logger.header('Welcome to SizeWise Configuration Wizard');
logger.dim('This wizard will help you create a customized configuration file for your project.');
logger.blank();
try {
const answers = await inquirer_1.default.prompt([
{
type: 'list',
name: 'platform',
message: 'Which platform are you using?',
choices: [
{ name: 'GitHub', value: 'github' },
{ name: 'GitLab', value: 'gitlab' },
],
},
{
type: 'confirm',
name: 'enableComments',
message: 'Would you like SizeWise to comment on pull/merge requests?',
default: true,
},
{
type: 'confirm',
name: 'enableLabels',
message: 'Would you like SizeWise to add size labels to pull/merge requests?',
default: true,
},
]);
// Generate configuration
const config = {
...index_1.DEFAULT_CONFIG,
comment: {
enabled: answers.enableComments,
template: '🔍 **Pull Request Size:** {size}',
updateExisting: true,
},
label: {
enabled: answers.enableLabels,
prefix: 'size:',
},
};
// Determine config file location based on platform
const configPath = path_1.default.resolve(process.cwd(), `.${answers.platform}/sizewise.config.json`);
const configDir = path_1.default.dirname(configPath);
if (!fs_1.default.existsSync(configDir)) {
fs_1.default.mkdirSync(configDir, { recursive: true });
}
// Write configuration file
fs_1.default.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf8');
// Success message
logger.blank();
logger.header('Configuration Complete');
logger.success('Configuration file created successfully!');
logger.info(`Location: ${configPath}`);
logger.blank();
logger.info('You can now run SizeWise with your custom configuration:');
logger.dim('npx sizewise');
logger.blank();
}
catch (error) {
logger.blank();
logger.logError('Error creating configuration', error);
logger.blank();
process.exit(1);
}
}
//# sourceMappingURL=wizard.js.map