UNPKG

ovm

Version:

OVM is a CLI application for managing Obsidian vaults.

83 lines 3.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSelectedVaults = exports.mapVaultsIteratorItem = exports.loadVaults = exports.getVaultName = exports.getVaultPath = exports.vaultsSelector = exports.findVaultsByPatternMatching = void 0; const prompts_1 = require("@inquirer/prompts"); const glob_1 = require("glob"); const obsidian_utils_1 = require("obsidian-utils"); const path_1 = require("path"); const env_1 = require("../utils/env"); const logger_1 = require("../utils/logger"); const findVaultsByPatternMatching = async (pathPattern) => { if (!pathPattern.endsWith('.obsidian')) { pathPattern = `${pathPattern}/**/.obsidian`; } const vaultsMatches = await (0, glob_1.glob)(pathPattern, { absolute: true, dot: true, nocase: true, }); const detectedVaults = []; const vaultsQueryPromises = vaultsMatches.map((vault) => (0, obsidian_utils_1.findVault)(vault)); for await (const [vault] of vaultsQueryPromises) { detectedVaults.push({ ...vault, name: (0, path_1.basename)((0, path_1.dirname)(vault.path)), path: (0, path_1.dirname)(vault.path), }); } return detectedVaults; }; exports.findVaultsByPatternMatching = findVaultsByPatternMatching; const vaultsSelector = async (vaults) => { const choices = vaults .map((vault) => ({ name: vault.name, value: vault, })) .sort((a, b) => a.name.localeCompare(b.name)); if ((0, env_1.isTestEnv)()) { const [{ value: testVault }] = choices; return [testVault]; } const selectedVaults = await (0, prompts_1.checkbox)({ choices, message: 'Select the vaults:', validate: (selected) => selected.length > 0 || 'At least one vault must be selected', required: true, }); logger_1.logger.debug('Selected vaults', { selectedVaults }); return selectedVaults; }; exports.vaultsSelector = vaultsSelector; const getVaultPath = (vault) => vault.path; exports.getVaultPath = getVaultPath; const getVaultName = (vault) => vault.name; exports.getVaultName = getVaultName; const loadVaults = async (path) => { const isPathSpecifiedAndValid = path && path.trim().length > 0; let vaults = []; if (isPathSpecifiedAndValid) { vaults = await (0, exports.findVaultsByPatternMatching)(path); } else { vaults = await (0, obsidian_utils_1.findVault)(); } if (vaults.length === 0) { throw new Error(`No vaults found!`); } return vaults; }; exports.loadVaults = loadVaults; const mapVaultsIteratorItem = (vaults, config, flags, args = {}) => vaults.map((vault) => ({ vault, config, flags, args, })); exports.mapVaultsIteratorItem = mapVaultsIteratorItem; const getSelectedVaults = async (path) => { const vaults = await (0, exports.loadVaults)(path); return await (0, exports.vaultsSelector)(vaults); }; exports.getSelectedVaults = getSelectedVaults; //# sourceMappingURL=vaults.js.map