UNPKG

@citiwave/im-disclaimer-modal

Version:

A customizable React disclaimer modal component with theme support

104 lines (103 loc) 4.47 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createGroup = createGroup; const inquirer_1 = __importDefault(require("inquirer")); const promises_1 = __importDefault(require("fs/promises")); const path_1 = __importDefault(require("path")); const chalk_1 = __importDefault(require("chalk")); const config_1 = require("../utils/config"); async function getAvailableDisclaimers(disclaimersDir) { try { // Read the config file to get available disclaimers const configPath = path_1.default.join(disclaimersDir, '_config.json'); const configContent = await promises_1.default.readFile(configPath, 'utf-8'); const config = JSON.parse(configContent); // Return the keys from the config as available disclaimers return Object.keys(config); } catch (error) { console.error(chalk_1.default.red('Error reading disclaimers config:'), error); process.exit(1); } } async function createGroup() { try { // Get the configured disclaimers directory const disclaimersDir = await (0, config_1.getDefaultDirectory)(); // Get available disclaimers from config const availableDisclaimers = await getAvailableDisclaimers(disclaimersDir); // Get group name const { groupName } = await inquirer_1.default.prompt([ { type: 'input', name: 'groupName', message: 'Enter a name for your disclaimer group:', validate: (input) => { if (!input) return 'Group name is required'; if (!/^[a-zA-Z0-9-]+$/.test(input)) { return 'Group name can only contain letters, numbers, and hyphens'; } return true; } } ]); // Select disclaimers for the group const { selectedDisclaimers } = await inquirer_1.default.prompt([ { type: 'checkbox', name: 'selectedDisclaimers', message: 'Select disclaimers to include in this group:', choices: availableDisclaimers, validate: (input) => { if (input.length === 0) return 'Please select at least one disclaimer'; return true; } } ]); // Set priorities for selected disclaimers const priorities = {}; for (let i = 0; i < selectedDisclaimers.length; i++) { const { priority } = await inquirer_1.default.prompt([ { type: 'number', name: 'priority', message: `Set priority for ${selectedDisclaimers[i]} (lower number = higher priority):`, default: i + 1, validate: (input) => { if (isNaN(input) || input < 1) { return 'Priority must be a positive number'; } return true; } } ]); priorities[selectedDisclaimers[i]] = priority; } // Create group data const groupData = { name: groupName, disclaimers: selectedDisclaimers, priorities }; // Ensure groups directory exists in the configured disclaimers directory const groupsDir = path_1.default.join(disclaimersDir, 'groups'); await promises_1.default.mkdir(groupsDir, { recursive: true }); // Write group file const filePath = path_1.default.join(groupsDir, `${groupName}.json`); await promises_1.default.writeFile(filePath, JSON.stringify(groupData, null, 2)); console.log(chalk_1.default.green(`\n✓ Successfully created disclaimer group: ${groupName}`)); console.log(chalk_1.default.blue('\nGroup configuration:')); console.log(JSON.stringify(groupData, null, 2)); console.log(chalk_1.default.yellow(`\nGroup file created at: ${filePath}`)); } catch (error) { console.error(chalk_1.default.red('Error creating disclaimer group:'), error); process.exit(1); } }