@citiwave/im-disclaimer-modal
Version:
A customizable React disclaimer modal component with theme support
95 lines (94 loc) • 4.34 kB
JavaScript
;
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);
}
}