mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-05-13 11:01:16 +00:00
IgnoreRules (src/apps/cli/serviceModules/IgnoreRules.ts): - Reads .livesync/ignore for user-defined glob patterns - Applies gitignore matchBase semantics: patterns without / get **/ prefix, patterns ending with / get ** appended for directory contents - Supports `import: .gitignore` directive to merge gitignore patterns - Rejects negation patterns with a warning (not fully supportable) - Integrated into both daemon and mirror commands via isTargetFile handler Wiring: - IgnoreRules loaded before LiveSyncBaseCore construction so beginWatch() receives rules when it fires during onLoad/onFirstInitialise - Passed through initialiseServiceModulesCLI -> StorageEventManagerCLI -> CLIStorageEventManagerAdapter -> CLIWatchAdapter Deployment: - src/apps/cli/deploy/livesync-cli.service - systemd unit template - src/apps/cli/deploy/install.sh - user/system install script Testing: - src/apps/cli/test/test-daemon-linux.sh - e2e tests for ignore rules - src/apps/cli/serviceModules/IgnoreRules.unit.spec.ts - 15 unit tests - src/apps/cli/commands/daemonCommand.unit.spec.ts - 7 unit tests
39 lines
1.5 KiB
TypeScript
39 lines
1.5 KiB
TypeScript
import { StorageEventManagerBase, type StorageEventManagerBaseDependencies } from "@lib/managers/StorageEventManager";
|
|
import { CLIStorageEventManagerAdapter } from "./CLIStorageEventManagerAdapter";
|
|
import type { IMinimumLiveSyncCommands, LiveSyncBaseCore } from "../../../LiveSyncBaseCore";
|
|
import type { ServiceContext } from "@lib/services/base/ServiceBase";
|
|
import type { IgnoreRules } from "../serviceModules/IgnoreRules";
|
|
// import type { IMinimumLiveSyncCommands } from "@lib/services/base/IService";
|
|
|
|
export class StorageEventManagerCLI extends StorageEventManagerBase<CLIStorageEventManagerAdapter> {
|
|
core: LiveSyncBaseCore<ServiceContext, IMinimumLiveSyncCommands>;
|
|
|
|
constructor(
|
|
basePath: string,
|
|
core: LiveSyncBaseCore<ServiceContext, IMinimumLiveSyncCommands>,
|
|
dependencies: StorageEventManagerBaseDependencies,
|
|
ignoreRules?: IgnoreRules,
|
|
watchEnabled?: boolean
|
|
) {
|
|
const adapter = new CLIStorageEventManagerAdapter(basePath, ignoreRules, watchEnabled);
|
|
super(adapter, dependencies);
|
|
this.core = core;
|
|
}
|
|
|
|
/**
|
|
* Override _watchVaultRawEvents for CLI-specific logic
|
|
* In CLI, we don't have internal files like Obsidian's .obsidian folder
|
|
*/
|
|
protected override async _watchVaultRawEvents(path: string) {
|
|
// No-op in CLI version
|
|
// Internal file handling is not needed
|
|
}
|
|
|
|
/**
|
|
* Close the file watcher. Call this during graceful shutdown.
|
|
*/
|
|
close(): Promise<void> {
|
|
return this.adapter.close();
|
|
}
|
|
}
|