Some checks are pending
CI / build (push) Waiting to run
- Switch package manager from npm to Bun (bun.lock replaces package-lock.json) - Move source to src/main.ts, tests to test/ (flattened structure) - Build output now goes to dist/ with git-based version stamping in manifest - Replace ESLint legacy config with ESLint v9 flat config (typescript-eslint v8) - Add Prettier for formatting (.prettierrc) - Add Husky pre-commit hook running bun run lint - Add vault management scripts (install, uninstall, symlink, unlink) - Add GitHub Actions CI and release workflows - Update tsconfig for TypeScript v5, add isolatedModules/esModuleInterop - Upgrade Jest config to jsdom environment, coverage from src/** - Remove Makefile, version-bump.mjs, versions.json (replaced by bun scripts and git-tag versioning)
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { existsSync, lstatSync, unlinkSync, readlinkSync } from 'fs';
|
|
import { resolve } from 'path';
|
|
|
|
const manifest = await Bun.file('manifest.json').json();
|
|
const pluginId: string = manifest.id;
|
|
|
|
const vaultPath = process.argv[2] || process.env.OBSIDIAN_VAULT;
|
|
|
|
if (!vaultPath) {
|
|
console.error(
|
|
'Usage: bun run scripts/unlink-from-vault.ts <vault-path>\n' + ' or set OBSIDIAN_VAULT environment variable',
|
|
);
|
|
process.exit(1);
|
|
}
|
|
|
|
const resolvedVault = resolve(vaultPath);
|
|
const pluginsDir = resolve(resolvedVault, '.obsidian', 'plugins');
|
|
const targetDir = resolve(pluginsDir, pluginId);
|
|
const distDir = resolve(import.meta.dir, '..', 'dist');
|
|
|
|
if (!existsSync(targetDir)) {
|
|
console.log(`Symlink not found: ${targetDir} does not exist`);
|
|
process.exit(0);
|
|
}
|
|
|
|
if (!lstatSync(targetDir).isSymbolicLink()) {
|
|
console.error(`${targetDir} is not a symlink. Use 'vault:uninstall' instead.`);
|
|
process.exit(1);
|
|
}
|
|
|
|
const linkTarget = readlinkSync(targetDir);
|
|
const resolvedLinkTarget = resolve(pluginsDir, linkTarget);
|
|
|
|
if (resolvedLinkTarget !== distDir) {
|
|
console.error(`Refusing to remove for safety: symlink points to ${resolvedLinkTarget}, not ${distDir}`);
|
|
process.exit(1);
|
|
}
|
|
|
|
unlinkSync(targetDir);
|
|
console.log(`Removed symlink: ${targetDir}`);
|