kawazu
Version:
kawazu CLI tool for real-time chat in your editor
117 lines (116 loc) • 5.99 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.configureSettings = configureSettings;
exports.showConfig = showConfig;
const chalk_1 = __importDefault(require("chalk"));
const inquirer_1 = __importDefault(require("inquirer"));
const config_1 = require("../utils/config");
async function configureSettings(options) {
try {
console.log(chalk_1.default.blue('⚙️ Kawazu CLI 設定\n'));
// 現在の設定を読み込み
const currentConfig = await (0, config_1.loadConfig)();
// オプションが指定されている場合は直接設定
if (options.server || options.username) {
const newConfig = { ...currentConfig };
if (options.server) {
newConfig.server_url = options.server;
console.log(chalk_1.default.green(`✅ サーバーURL を設定しました: ${options.server}`));
}
if (options.username) {
newConfig.default_username = options.username;
console.log(chalk_1.default.green(`✅ デフォルトユーザー名を設定しました: ${options.username}`));
}
await (0, config_1.saveConfig)(newConfig);
return;
}
// インタラクティブ設定モード
console.log(chalk_1.default.gray('現在の設定:'));
console.log(` サーバーURL: ${chalk_1.default.cyan(currentConfig.server_url)}`);
console.log(` デフォルトユーザー名: ${chalk_1.default.cyan(currentConfig.default_username || '未設定')}`);
console.log(` エディタ自動オープン: ${chalk_1.default.cyan(currentConfig.auto_open_editor ? 'ON' : 'OFF')}`);
console.log(` エディタコマンド: ${chalk_1.default.cyan(currentConfig.editor_command || 'code')}\n`);
const answers = await inquirer_1.default.prompt([
{
type: 'input',
name: 'server_url',
message: 'サーバーURL:',
default: currentConfig.server_url,
validate: (input) => {
try {
new URL(input);
return true;
}
catch {
return '有効なURLを入力してください';
}
}
},
{
type: 'input',
name: 'default_username',
message: 'デフォルトユーザー名 (任意):',
default: currentConfig.default_username || '',
validate: (input) => {
if (!input.trim())
return true; // 空の場合はOK
if (input.length > 50)
return 'ユーザー名は50文字以内で入力してください';
if (!/^[a-zA-Z0-9_-]+$/.test(input))
return 'ユーザー名は英数字、ハイフン、アンダースコアのみ使用できます';
return true;
}
},
{
type: 'confirm',
name: 'auto_open_editor',
message: 'ルーム参加時に自動でエディタを開きますか?',
default: currentConfig.auto_open_editor || false
},
{
type: 'input',
name: 'editor_command',
message: 'エディタコマンド:',
default: currentConfig.editor_command || 'code',
when: (answers) => answers.auto_open_editor
}
]);
// 空文字の場合は undefined にする
const newConfig = {
server_url: answers.server_url,
default_username: answers.default_username || undefined,
auto_open_editor: answers.auto_open_editor,
editor_command: answers.editor_command || 'code'
};
await (0, config_1.saveConfig)(newConfig);
console.log(chalk_1.default.green('\n✅ 設定を保存しました!'));
// 設定確認
console.log(chalk_1.default.blue('\n📋 更新された設定:'));
console.log(` サーバーURL: ${chalk_1.default.cyan(newConfig.server_url)}`);
console.log(` デフォルトユーザー名: ${chalk_1.default.cyan(newConfig.default_username || '未設定')}`);
console.log(` エディタ自動オープン: ${chalk_1.default.cyan(newConfig.auto_open_editor ? 'ON' : 'OFF')}`);
if (newConfig.auto_open_editor) {
console.log(` エディタコマンド: ${chalk_1.default.cyan(newConfig.editor_command)}`);
}
}
catch (error) {
console.error(chalk_1.default.red(`❌ 設定でエラーが発生しました: ${error.message}`));
}
}
async function showConfig() {
try {
const config = await (0, config_1.loadConfig)();
console.log(chalk_1.default.blue('⚙️ 現在の設定:\n'));
console.log(`${chalk_1.default.bold('サーバーURL:')} ${chalk_1.default.cyan(config.server_url)}`);
console.log(`${chalk_1.default.bold('デフォルトユーザー名:')} ${chalk_1.default.cyan(config.default_username || '未設定')}`);
console.log(`${chalk_1.default.bold('エディタ自動オープン:')} ${chalk_1.default.cyan(config.auto_open_editor ? 'ON' : 'OFF')}`);
console.log(`${chalk_1.default.bold('エディタコマンド:')} ${chalk_1.default.cyan(config.editor_command || 'code')}`);
console.log(chalk_1.default.gray('\n設定を変更するには: kawazu config'));
}
catch (error) {
console.error(chalk_1.default.red(`❌ 設定の読み込みでエラーが発生しました: ${error.message}`));
}
}