UNPKG

@citiwave/im-disclaimer-modal

Version:

A customizable React disclaimer modal component with theme support

95 lines (94 loc) 4.34 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateConfig = updateConfig; exports.showConfig = showConfig; const fs_extra_1 = __importDefault(require("fs-extra")); const path_1 = __importDefault(require("path")); const chalk_1 = __importDefault(require("chalk")); const inquirer_1 = __importDefault(require("inquirer")); const validation_1 = require("../utils/validation"); async function validateAndNormalizePath(dirPath) { const validation = await (0, validation_1.validateDirectory)(dirPath); if (!validation.isValid) { console.error(chalk_1.default.red(`Error: ${validation.error}`)); return null; } return path_1.default.resolve(process.cwd(), dirPath); } async function updateConfig(options) { try { const homeDir = process.env.HOME || process.env.USERPROFILE; const configDir = path_1.default.join(homeDir, '.im-disclaimer'); const configFile = path_1.default.join(configDir, 'config.json'); // Check if config exists if (!await fs_extra_1.default.pathExists(configFile)) { console.error(chalk_1.default.red('Configuration not found. Please run setup first.')); return; } // Load current config const currentConfig = await fs_extra_1.default.readJson(configFile); // If directory not provided, prompt for it let newDir = options.defaultDir; if (!newDir) { const answer = await inquirer_1.default.prompt([ { type: 'input', name: 'defaultDir', message: 'Enter new default directory for disclaimer data:', default: currentConfig.defaultDirectory, validate: async (input) => { if (!input) return 'Directory cannot be empty'; const validation = await (0, validation_1.validateDirectory)(input); return validation.isValid ? true : validation.error; } } ]); newDir = answer.defaultDir; } // Validate and normalize the new directory path const normalizedPath = await validateAndNormalizePath(newDir); if (!normalizedPath) { return; } // Update config const updatedConfig = { ...currentConfig, defaultDirectory: normalizedPath }; // Save updated config await fs_extra_1.default.writeJson(configFile, updatedConfig, { spaces: 2 }); // Create the new directory if it doesn't exist await fs_extra_1.default.ensureDir(normalizedPath); console.log(chalk_1.default.green('\n✓ Configuration updated!')); console.log(chalk_1.default.gray(`Default directory changed to: ${normalizedPath}`)); console.log(chalk_1.default.gray(`Config file location: ${configFile}\n`)); } catch (error) { console.error(chalk_1.default.red('Failed to update configuration:'), error); } } async function showConfig() { try { const homeDir = process.env.HOME || process.env.USERPROFILE; const configFile = path_1.default.join(homeDir, '.im-disclaimer', 'config.json'); if (!await fs_extra_1.default.pathExists(configFile)) { console.error(chalk_1.default.red('Configuration not found. Please run setup first.')); return; } const config = await fs_extra_1.default.readJson(configFile); const absolutePath = path_1.default.resolve(process.cwd(), config.defaultDirectory); console.log('\nCurrent Configuration:'); console.log(chalk_1.default.gray('─'.repeat(30))); console.log(chalk_1.default.blue('Default Directory:'), config.defaultDirectory); console.log(chalk_1.default.blue('Absolute Path:'), absolutePath); console.log(chalk_1.default.blue('Version:'), config.version); console.log(chalk_1.default.gray('─'.repeat(30)), '\n'); } catch (error) { console.error(chalk_1.default.red('Failed to read configuration:'), error); } }