Refactor configHandler.ts to read and write YAML configuration files
This commit is contained in:
parent
aca6d76a5c
commit
cce0020696
@ -2,10 +2,46 @@
|
|||||||
Commands for handling configuration read and write
|
Commands for handling configuration read and write
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import * as fs from 'fs';
|
||||||
|
import * as path from 'path';
|
||||||
import * as vscode from 'vscode';
|
import * as vscode from 'vscode';
|
||||||
|
import yaml from 'yaml';
|
||||||
import { regInMessage, regOutMessage } from '../util/reg_messages';
|
import { regInMessage, regOutMessage } from '../util/reg_messages';
|
||||||
import { MessageHandler } from './messageHandler';
|
import { MessageHandler } from './messageHandler';
|
||||||
import { DevChatConfig } from '../util/config';
|
import { DevChatConfig } from '../util/config';
|
||||||
|
import { logger } from '../util/logger';
|
||||||
|
|
||||||
|
|
||||||
|
// 读取YAML配置文件的函数
|
||||||
|
function readYamlConfigFile(configFilePath: string): any {
|
||||||
|
try {
|
||||||
|
// 如果配置文件不存在,创建一个空文件
|
||||||
|
if (!fs.existsSync(configFilePath)) {
|
||||||
|
fs.mkdirSync(path.dirname(configFilePath), { recursive: true });
|
||||||
|
fs.writeFileSync(configFilePath, '', 'utf8');
|
||||||
|
}
|
||||||
|
|
||||||
|
const fileContents = fs.readFileSync(configFilePath, 'utf8');
|
||||||
|
const data = yaml.parse(fileContents) || {};
|
||||||
|
|
||||||
|
return data;
|
||||||
|
} catch (error) {
|
||||||
|
logger.channel()?.error(`Error reading the config file: ${error}`);
|
||||||
|
logger.channel()?.show();
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 写入YAML配置文件的函数
|
||||||
|
function writeYamlConfigFile(configFilePath: string, data: any): void {
|
||||||
|
try {
|
||||||
|
const yamlStr = yaml.stringify(data);
|
||||||
|
fs.writeFileSync(configFilePath, yamlStr, 'utf8');
|
||||||
|
} catch (error) {
|
||||||
|
logger.channel()?.error(`Error writing the config file: ${error}`);
|
||||||
|
logger.channel()?.show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
regInMessage({command: 'readConfig', key: ['A','B']}); // when key is "", it will get all config values
|
regInMessage({command: 'readConfig', key: ['A','B']}); // when key is "", it will get all config values
|
||||||
regOutMessage({command: 'readConfig', key: ['A', 'B'], value: 'any'});
|
regOutMessage({command: 'readConfig', key: ['A', 'B'], value: 'any'});
|
||||||
@ -27,3 +63,22 @@ export async function writeConfig(message: any, panel: vscode.WebviewPanel|vscod
|
|||||||
DevChatConfig.getInstance().set(message.key, message.value);
|
DevChatConfig.getInstance().set(message.key, message.value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
regInMessage({command: 'readServerConfigBase', key: ['A','B']}); // when key is "", it will get all config values
|
||||||
|
regOutMessage({command: 'readServerConfigBase', key: ['A', 'B'], value: 'any'});
|
||||||
|
export async function readServerConfigBase(message: any, panel: vscode.WebviewPanel|vscode.WebviewView): Promise<void> {
|
||||||
|
const serverConfigFile = path.join(process.env.HOME || process.env.USERPROFILE || '', '.chat', 'server_config.yml');
|
||||||
|
const config = readYamlConfigFile(serverConfigFile);
|
||||||
|
if (!config) {
|
||||||
|
MessageHandler.sendMessage(panel, {command: 'readServerConfigBase', value: {}});
|
||||||
|
} else {
|
||||||
|
MessageHandler.sendMessage(panel, {command: 'readServerConfigBase', value: config});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
regInMessage({command: 'writeServerConfigBase', key: ['A', 'B'], value: 'any'}); // when key is "", it will rewrite all config values
|
||||||
|
export async function writeServerConfigBase(message: any, panel: vscode.WebviewPanel|vscode.WebviewView): Promise<void> {
|
||||||
|
const serverConfigFile = path.join(process.env.HOME || process.env.USERPROFILE || '', '.chat', 'server_config.yml');
|
||||||
|
const config = message.value;
|
||||||
|
writeYamlConfigFile(serverConfigFile, config);
|
||||||
|
}
|
@ -15,7 +15,7 @@ import { doVscodeCommand } from './vscodeCommandHandler';
|
|||||||
import { featureToggle, getFeatureToggles } from './featureToggleHandler';
|
import { featureToggle, getFeatureToggles } from './featureToggleHandler';
|
||||||
import { readFile, writeFile } from './fileHandler';
|
import { readFile, writeFile } from './fileHandler';
|
||||||
import { getTopics, deleteTopic } from './topicHandler';
|
import { getTopics, deleteTopic } from './topicHandler';
|
||||||
import { readConfig, writeConfig } from './configHandler';
|
import { readConfig, writeConfig, readServerConfigBase, writeServerConfigBase } from './configHandler';
|
||||||
import { getSetting, getUserAccessKey, getValidLlmModelList, updateSetting } from './removehandler';
|
import { getSetting, getUserAccessKey, getValidLlmModelList, updateSetting } from './removehandler';
|
||||||
|
|
||||||
|
|
||||||
@ -86,6 +86,10 @@ messageHandler.registerHandler('deleteTopic', deleteTopic);
|
|||||||
messageHandler.registerHandler('readConfig', readConfig);
|
messageHandler.registerHandler('readConfig', readConfig);
|
||||||
messageHandler.registerHandler('writeConfig', writeConfig);
|
messageHandler.registerHandler('writeConfig', writeConfig);
|
||||||
|
|
||||||
|
messageHandler.registerHandler('readServerConfigBase', readServerConfigBase);
|
||||||
|
messageHandler.registerHandler('writeServerConfigBase', writeServerConfigBase);
|
||||||
|
|
||||||
|
|
||||||
messageHandler.registerHandler('regModelList', getValidLlmModelList);
|
messageHandler.registerHandler('regModelList', getValidLlmModelList);
|
||||||
messageHandler.registerHandler('updateSetting', updateSetting);
|
messageHandler.registerHandler('updateSetting', updateSetting);
|
||||||
messageHandler.registerHandler('getSetting', getSetting);
|
messageHandler.registerHandler('getSetting', getSetting);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user