Default new CLI and Obsidian environments to NFC path identity

This commit is contained in:
vorotamoroz committed 2026-11-02 04:40:44 +00:00
1 parent ac502b0261
commit 39cc31c2e8
26 files changed
+1466 -61

No files matched your search

+19
View File
@@ -30,6 +30,8 @@ import type { ReplicationSchedulingControl } from "@/serviceFeatures/replication
import { createNodeStandardIo, fsPromises as fs, path } from "@vrtmrz/livesync-commonlib/node";
import type { StandardIo } from "@vrtmrz/livesync-commonlib/context";
import { writeStderrLine, writeStdoutLine } from "./cliOutput";
import { REMOTE_RESOURCE_KINDS } from "@vrtmrz/livesync-commonlib/replication";
import { resolveInitialFetchPathIdentity } from "./initialFetchPathIdentity";
import { createDefaultCliSettings } from "./cliSettingsDefaults";
import {
applyStoredSetting,
@@ -601,6 +603,22 @@ export async function main(
throw new Error("Replication scheduling was not provided during core feature composition.");
}
let initialFetchPathIdentity: 0 | 1 | undefined;
if (options.command === "fetch") {
core.services.appLifecycle.onSettingLoaded.addHandler(async () => {
const settings = core.services.setting.currentSettings();
const version = await resolveInitialFetchPathIdentity(settings, () =>
core.services.replicator.createRemoteResource(REMOTE_RESOURCE_KINDS.CONNECTION, settings)
);
if (version !== undefined) {
initialFetchPathIdentity = version;
await core.services.setting.applyPartial({ pathNormalizationVersion: version });
await core.services.setting.saveSettingData();
}
return true;
});
}
// Setup signal handlers for graceful shutdown
const shutdown = async (signal: string) => {
writeStdoutLine(standardIo);
@@ -802,6 +820,7 @@ export async function main(
: (JSON.parse(originalSettingsText) as ObsidianLiveSyncSettings);
durable.additionalSuffixOfDatabaseName =
core.services.setting.currentSettings().additionalSuffixOfDatabaseName;
if (initialFetchPathIdentity !== undefined) durable.pathNormalizationVersion = initialFetchPathIdentity;
settingsTextToCommit = JSON.stringify(durable, null, 2);
}
settingsTextToCommit ??= originalSettingsText;