Files
ignis/server/config.js

68 lines
1.9 KiB
JavaScript
Raw Normal View History

2026-03-10 21:07:19 +01:00
const path = require("path");
2026-03-10 22:31:01 +01:00
const fs = require("fs");
// VAULT_ROOT: a directory that contains vault folders.
// Each subdirectory is a vault. New vaults are created as new subdirs.
// Falls back to parent of VAULT_PATH (single-vault compat) or ./vaults.
const vaultRoot =
process.env.VAULT_ROOT ||
(process.env.VAULT_PATH
? path.dirname(process.env.VAULT_PATH)
: path.join(__dirname, "..", "vaults"));
2026-03-12 21:34:39 +01:00
// Ensure vault root exists
try {
fs.mkdirSync(vaultRoot, { recursive: true });
} catch (e) {
console.error("[config] Failed to create VAULT_ROOT:", vaultRoot, e.message);
}
2026-03-10 22:31:01 +01:00
function discoverVaults() {
const vaults = {};
try {
const entries = fs.readdirSync(vaultRoot, { withFileTypes: true });
for (const entry of entries) {
if (entry.isDirectory() && !entry.name.startsWith(".")) {
vaults[entry.name] = path.join(vaultRoot, entry.name);
}
}
} catch (e) {
console.error("[config] Failed to read VAULT_ROOT:", vaultRoot, e.message);
}
2026-03-12 21:34:39 +01:00
// Create a default vault if none exist
if (Object.keys(vaults).length === 0) {
const defaultPath = path.join(vaultRoot, "My Vault");
try {
fs.mkdirSync(path.join(defaultPath, ".obsidian"), { recursive: true });
vaults["My Vault"] = defaultPath;
console.log("[config] Created default vault: My Vault");
} catch (e) {
console.error("[config] Failed to create default vault:", e.message);
}
}
2026-03-10 22:31:01 +01:00
return vaults;
}
let vaults = discoverVaults();
2026-03-07 09:51:37 +01:00
module.exports = {
port: process.env.PORT || 8080,
2026-03-10 22:31:01 +01:00
vaultRoot,
get vaults() {
return vaults;
},
get defaultVaultId() {
return Object.keys(vaults)[0] || null;
},
getVaultPath(id) {
return vaults[id] || null;
},
refreshVaults() {
vaults = discoverVaults();
return vaults;
},
2026-03-10 21:07:19 +01:00
obsidianAssetsPath:
process.env.OBSIDIAN_ASSETS_PATH ||
path.join(__dirname, "..", "investigation", "obsidian.asar.unpacked"),
2026-03-07 09:51:37 +01:00
};