def activate_newly_installed() -> Do: new = yield Ribo.zoom_main(NS.inspect_either(lambda a: a.inactive)) yield activate_multi(new) yield Ribo.zoom_main(activation_complete())
def activation_complete() -> Do: rplugins = yield NS.inspect_either(lambda a: a.uninitialized_rplugins) tracked = rplugins.filter(lambda a: a.rplugin.track) failed = yield NS.lift(initialize_plugins(tracked)) yield NS.modify(lambda a: a.initialization_complete(failed))
def activate_by_names(plugins: List[str]) -> Do: getter = (lambda a: a.ready_rplugins) if plugins.empty else ( lambda a: a.ready_by_name(plugins)) rplugins = yield Ribo.zoom_main(NS.inspect_either(getter)) yield (NS.error(resources.no_plugins_match_for_activation(plugins)) if rplugins.empty else activate_multi(rplugins))
def deactivate_by_names(plugins: List[str]) -> Do: getter = (lambda a: a.active_rplugins) if plugins.empty else ( lambda a: a.active_rplugins_by_name(plugins)) rplugins = yield NS.inspect_either(getter) yield (NS.error(resources.no_plugins_match_for_deactivation(plugins)) if rplugins.empty else deactivate_multi(rplugins))
def activate_multi(new_rplugins: List[Rplugin]) -> Do: active = yield Ribo.zoom_main( NS.inspect_either(lambda a: a.active_rplugins)) active_rplugins = active.map(lambda a: a.rplugin) already_active, inactive = new_rplugins.split(active_rplugins.contains) yield inactive.traverse(activate_rplugin, NS).replace(already_active)