obsidian-plugin-markdown-tasks/scripts/install-to-vault.ts
Felipe M. 9102fa5b51
Some checks failed
CI / build (push) Failing after 13s
Release / build (push) Failing after 9s
Add prettier/eslint/husky as devDependencies
Declare prettier, eslint, and husky in package.json so the lint and
prepare scripts work without relying on globally-installed tools.
Add a .prettierrc.json matching the project's tabs/no-bracket-spacing
style and apply prettier --write across the tree.
2026-05-04 09:55:38 +02:00

46 lines
1.3 KiB
TypeScript

import {existsSync, mkdirSync, cpSync, lstatSync} 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/install-to-vault.ts <vault-path>\n" +
" or set OBSIDIAN_VAULT environment variable",
);
process.exit(1);
}
const resolvedVault = resolve(vaultPath);
const obsidianDir = resolve(resolvedVault, ".obsidian");
const pluginsDir = resolve(obsidianDir, "plugins");
const targetDir = resolve(pluginsDir, pluginId);
const distDir = resolve(import.meta.dir, "..", "dist");
// Validation checks
if (!existsSync(obsidianDir)) {
console.error(`Invalid vault path: ${resolvedVault}`);
console.error(`.obsidian directory not found at ${obsidianDir}`);
process.exit(1);
}
if (!existsSync(distDir)) {
console.error(`Build not found: run 'bun run build' first`);
process.exit(1);
}
if (existsSync(targetDir) && lstatSync(targetDir).isSymbolicLink()) {
console.error(`${targetDir} is a symlink. Use 'vault:install-symlink' instead.`);
process.exit(1);
}
// Install
if (!existsSync(pluginsDir)) {
mkdirSync(pluginsDir, {recursive: true});
}
cpSync(distDir, targetDir, {recursive: true});
console.log(`Installed to: ${targetDir}`);