mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-28 18:22:42 -08:00
Fix child-process arg warning
This commit is contained in:
@@ -18,6 +18,8 @@ test("loads defaults when config is missing", () => {
|
||||
assert.equal(config.websocket.port, DEFAULT_CONFIG.websocket.port);
|
||||
assert.equal(config.ankiConnect.behavior.autoUpdateNewCards, true);
|
||||
assert.equal(config.anilist.enabled, false);
|
||||
assert.equal(config.immersionTracking.enabled, true);
|
||||
assert.equal(config.immersionTracking.dbPath, undefined);
|
||||
});
|
||||
|
||||
test("parses anilist.enabled and warns for invalid value", () => {
|
||||
@@ -43,6 +45,26 @@ test("parses anilist.enabled and warns for invalid value", () => {
|
||||
assert.equal(service.getConfig().anilist.enabled, true);
|
||||
});
|
||||
|
||||
test("accepts immersion tracking config values", () => {
|
||||
const dir = makeTempDir();
|
||||
fs.writeFileSync(
|
||||
path.join(dir, "config.jsonc"),
|
||||
`{
|
||||
"immersionTracking": {
|
||||
"enabled": false,
|
||||
"dbPath": "/tmp/immersions/custom.sqlite"
|
||||
}
|
||||
}`,
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
const service = new ConfigService(dir);
|
||||
const config = service.getConfig();
|
||||
|
||||
assert.equal(config.immersionTracking.enabled, false);
|
||||
assert.equal(config.immersionTracking.dbPath, "/tmp/immersions/custom.sqlite");
|
||||
});
|
||||
|
||||
test("parses jsonc and warns/falls back on invalid value", () => {
|
||||
const dir = makeTempDir();
|
||||
fs.writeFileSync(
|
||||
|
||||
@@ -239,6 +239,9 @@ export const DEFAULT_CONFIG: ResolvedConfig = {
|
||||
invisibleOverlay: {
|
||||
startupVisibility: "platform-default",
|
||||
},
|
||||
immersionTracking: {
|
||||
enabled: true,
|
||||
},
|
||||
};
|
||||
|
||||
export const DEFAULT_ANKI_CONNECT_CONFIG = DEFAULT_CONFIG.ankiConnect;
|
||||
@@ -509,6 +512,19 @@ export const CONFIG_OPTION_REGISTRY: ConfigOptionRegistryEntry[] = [
|
||||
description:
|
||||
"Comma-separated primary subtitle language priority used by the launcher.",
|
||||
},
|
||||
{
|
||||
path: "immersionTracking.enabled",
|
||||
kind: "boolean",
|
||||
defaultValue: DEFAULT_CONFIG.immersionTracking.enabled,
|
||||
description: "Enable immersion tracking for mined subtitle metadata.",
|
||||
},
|
||||
{
|
||||
path: "immersionTracking.dbPath",
|
||||
kind: "string",
|
||||
defaultValue: DEFAULT_CONFIG.immersionTracking.dbPath,
|
||||
description:
|
||||
"Optional SQLite database path for immersion tracking. Empty value uses the default app data path.",
|
||||
},
|
||||
];
|
||||
|
||||
export const CONFIG_TEMPLATE_SECTIONS: ConfigTemplateSection[] = [
|
||||
@@ -621,6 +637,14 @@ export const CONFIG_TEMPLATE_SECTIONS: ConfigTemplateSection[] = [
|
||||
description: ["Anilist API credentials and update behavior."],
|
||||
key: "anilist",
|
||||
},
|
||||
{
|
||||
title: "Immersion Tracking",
|
||||
description: [
|
||||
"Enable/disable immersion tracking.",
|
||||
"Set dbPath to override the default sqlite database location.",
|
||||
],
|
||||
key: "immersionTracking",
|
||||
},
|
||||
];
|
||||
|
||||
export function deepCloneConfig(config: ResolvedConfig): ResolvedConfig {
|
||||
|
||||
@@ -485,6 +485,32 @@ export class ConfigService {
|
||||
);
|
||||
}
|
||||
|
||||
if (isObject(src.immersionTracking)) {
|
||||
const enabled = asBoolean(src.immersionTracking.enabled);
|
||||
if (enabled !== undefined) {
|
||||
resolved.immersionTracking.enabled = enabled;
|
||||
} else if (src.immersionTracking.enabled !== undefined) {
|
||||
warn(
|
||||
"immersionTracking.enabled",
|
||||
src.immersionTracking.enabled,
|
||||
resolved.immersionTracking.enabled,
|
||||
"Expected boolean.",
|
||||
);
|
||||
}
|
||||
|
||||
const dbPath = asString(src.immersionTracking.dbPath);
|
||||
if (dbPath !== undefined) {
|
||||
resolved.immersionTracking.dbPath = dbPath;
|
||||
} else if (src.immersionTracking.dbPath !== undefined) {
|
||||
warn(
|
||||
"immersionTracking.dbPath",
|
||||
src.immersionTracking.dbPath,
|
||||
resolved.immersionTracking.dbPath,
|
||||
"Expected string.",
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (isObject(src.subtitleStyle)) {
|
||||
resolved.subtitleStyle = {
|
||||
...resolved.subtitleStyle,
|
||||
|
||||
Reference in New Issue
Block a user