Add server configuration editor
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
export function iniValue(content: string, key: string): string {
|
||||
const escapedKey = key.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
||||
const match = content.match(new RegExp(`^[ \\t]*${escapedKey}[ \\t]*=[ \\t]*(.*?)[ \\t]*$`, "mi"));
|
||||
return match?.[1] ?? "";
|
||||
}
|
||||
|
||||
export function updateIniValues(content: string, changes: Record<string, string>): string {
|
||||
const newline = content.includes("\r\n") ? "\r\n" : "\n";
|
||||
const lines = content.replace(/\r\n/g, "\n").split("\n");
|
||||
const changed = new Set<string>();
|
||||
const output = lines.map((line) => {
|
||||
const match = line.match(/^\s*([^=\s]+)\s*=.*$/);
|
||||
if (!match || changes[match[1]] === undefined) return line;
|
||||
changed.add(match[1]);
|
||||
return `${match[1]}=${changes[match[1]]}`;
|
||||
});
|
||||
const missing = Object.entries(changes).filter(([key]) => !changed.has(key));
|
||||
if (missing.length) {
|
||||
if (output.length && output[output.length - 1] !== "") output.push("");
|
||||
output.push(...missing.map(([key, value]) => `${key}=${value}`));
|
||||
}
|
||||
return output.join(newline);
|
||||
}
|
||||
Reference in New Issue
Block a user