ovm
Version:
OVM is a CLI application for managing Obsidian vaults.
52 lines • 2.22 kB
JavaScript
;
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