rulesync
Version:
Unified AI rules management CLI tool that generates configuration files for various AI development tools
68 lines (65 loc) • 1.91 kB
JavaScript
import {
shouldIncludeServer
} from "./chunk-VI6SBYFB.js";
// src/generators/mcp/geminicli.ts
function generateGeminiCliMcp(config) {
const geminiSettings = {
mcpServers: {}
};
for (const [serverName, server] of Object.entries(config.mcpServers)) {
if (!shouldIncludeServer(server, "geminicli")) continue;
const geminiServer = {};
if (server.command) {
geminiServer.command = server.command;
if (server.args) geminiServer.args = server.args;
} else if (server.url || server.httpUrl) {
if (server.httpUrl) {
geminiServer.httpUrl = server.httpUrl;
} else if (server.url) {
geminiServer.url = server.url;
}
}
if (server.env) {
geminiServer.env = {};
for (const [key, value] of Object.entries(server.env)) {
if (value.startsWith("${") && value.endsWith("}")) {
geminiServer.env[key] = value;
} else {
geminiServer.env[key] = `\${${value}}`;
}
}
}
if (server.timeout !== void 0) {
geminiServer.timeout = server.timeout;
}
if (server.trust !== void 0) {
geminiServer.trust = server.trust;
}
geminiSettings.mcpServers[serverName] = geminiServer;
}
return JSON.stringify(geminiSettings, null, 2);
}
function generateGeminiCliMcpConfiguration(mcpServers, baseDir = "") {
const filepath = baseDir ? `${baseDir}/.gemini/settings.json` : ".gemini/settings.json";
const config = {
mcpServers: {}
};
for (const [serverName, server] of Object.entries(mcpServers)) {
if (!shouldIncludeServer(server, "geminicli")) {
continue;
}
const { targets: _, ...serverConfig } = server;
config.mcpServers[serverName] = { ...serverConfig };
}
return [
{
filepath,
content: `${JSON.stringify(config, null, 2)}
`
}
];
}
export {
generateGeminiCliMcp,
generateGeminiCliMcpConfiguration
};