diff --git a/frontend/obsidian-plugin/src/obsidian-file-system.ts b/frontend/obsidian-plugin/src/obsidian-file-system.ts index 1a4d7099..9905b036 100644 --- a/frontend/obsidian-plugin/src/obsidian-file-system.ts +++ b/frontend/obsidian-plugin/src/obsidian-file-system.ts @@ -26,7 +26,9 @@ export class ObsidianFileSystemOperations implements FileSystemOperations { break; } - if (folder.includes(".obsidian")) { + // This would be a very bad idea to sync as it would mess with + // the integrity of the sync database. + if (folder.endsWith(".obsidian/plugins/vault-link/data.json")) { continue; } diff --git a/frontend/obsidian-plugin/src/vault-link-plugin.ts b/frontend/obsidian-plugin/src/vault-link-plugin.ts index 68be059f..1e4fafb7 100644 --- a/frontend/obsidian-plugin/src/vault-link-plugin.ts +++ b/frontend/obsidian-plugin/src/vault-link-plugin.ts @@ -27,7 +27,7 @@ export default class VaultLinkPlugin extends Plugin { >(); public async onload(): Promise { - DEFAULT_SETTINGS.ignorePatterns.push(".obsidian", ".git"); + DEFAULT_SETTINGS.ignorePatterns.push(".obsidian/**", ".git/**"); this.client = await SyncClient.create({ fs: new ObsidianFileSystemOperations( diff --git a/frontend/sync-client/src/utils/globs-to-regexes.test.ts b/frontend/sync-client/src/utils/globs-to-regexes.test.ts new file mode 100644 index 00000000..ae1643e7 --- /dev/null +++ b/frontend/sync-client/src/utils/globs-to-regexes.test.ts @@ -0,0 +1,10 @@ +import { Logger } from "../tracing/logger"; +import { globsToRegex } from "./globs-to-regexes"; + +describe("globsToRegexes", () => { + it("basicExample", async () => { + const regex = globsToRegex([".git/**"], new Logger())[0]; + + expect(regex.test(".git/objects/object")).toBeTruthy(); + }); +}); diff --git a/frontend/sync-client/src/utils/globs-to-regexes.ts b/frontend/sync-client/src/utils/globs-to-regexes.ts new file mode 100644 index 00000000..3839fb99 --- /dev/null +++ b/frontend/sync-client/src/utils/globs-to-regexes.ts @@ -0,0 +1,16 @@ +import { makeRe } from "minimatch"; +import { Logger } from "../tracing/logger"; + +export function globsToRegex(globs: string[], logger: Logger): RegExp[] { + return globs + .map((pattern) => { + const result = makeRe(pattern); + if (result === false) { + logger.warn( + `Failed to parse ${pattern}' as a glob pattern, skipping it` + ); + } + return result; + }) + .filter((pattern) => pattern !== false); +}