UNPKG

ovm

Version:

OVM is a CLI application for managing Obsidian vaults.

52 lines 2.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.pruneVaultIterator = exports.action = void 0; const async_1 = require("async"); const plugins_1 = require("../../providers/plugins"); const vaults_1 = require("../../providers/vaults"); const command_1 = require("../../utils/command"); const logger_1 = require("../../utils/logger"); const config_1 = require("../config"); const pruneVaultIterator = async (item) => { const { vault, config } = item; const childLogger = logger_1.logger.child({ vault }); const result = { prunedPlugins: [] }; const installedPlugins = await (0, plugins_1.listInstalledPlugins)(vault.path); const referencedPlugins = config.plugins.map(({ id }) => id); const toBePruned = installedPlugins.filter(({ id }) => !referencedPlugins.includes(id)); for (const plugin of toBePruned) { await (0, plugins_1.removePluginDir)(plugin.id, vault.path); await (0, plugins_1.modifyCommunityPlugins)({ id: plugin.id }, vault.path, 'disable'); } childLogger.info(`Pruned ${toBePruned.length} plugins`, { vault, plugins: toBePruned.map(({ id }) => id), }); result.prunedPlugins = toBePruned; return result; }; exports.pruneVaultIterator = pruneVaultIterator; const action = async (args, flags, iterator = pruneVaultIterator, callback) => { const config = await (0, config_1.loadConfig)(flags.config); const selectedVaults = await (0, vaults_1.getSelectedVaults)(flags.path); const items = (0, vaults_1.mapVaultsIteratorItem)(selectedVaults, config, flags, args); const pruneCommandCallback = (error) => { const result = { success: false, error, }; if (!error) { result.success = true; logger_1.logger.info('Pruning plugins completed'); callback?.(error); return result; } logger_1.logger.error('Pruning plugins failed', { error }); callback?.(error); (0, command_1.handlerCommandError)(error); return result; }; return (0, async_1.each)(items, iterator, pruneCommandCallback); }; exports.action = action; //# sourceMappingURL=prune.js.map