ovm
Version:
Obsidian Vaults Manager
83 lines • 3.05 kB
JavaScript
;
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