def installed(): """Returns JSON of all installed plugins Fuses the discovery.yml data with meltano.yml data and sorts each type alphabetically by name """ project = Project.find() config = ConfigService(project) discovery = PluginDiscoveryService(project) installed_plugins = {} # merge definitions for plugin in sorted(config.plugins(), key=lambda x: x.name): try: definition = discovery.find_plugin(plugin.type, plugin.name) merged_plugin_definition = { **definition.canonical(), **plugin.canonical() } except PluginNotFoundError: merged_plugin_definition = {**plugin.canonical()} merged_plugin_definition.pop("settings", None) merged_plugin_definition.pop("select", None) if not plugin.type in installed_plugins: installed_plugins[plugin.type] = [] installed_plugins[plugin.type].append(merged_plugin_definition) return jsonify({ **project.meltano.canonical(), "plugins": installed_plugins })
def install(project, plugin_type, plugin_name, include_related): """ Installs all the dependencies of your project based on the meltano.yml file. Read more at https://www.meltano.com/docs/command-line-interface.html. """ config_service = ConfigService(project) if plugin_type: plugin_type = PluginType.from_cli_argument(plugin_type) plugins = config_service.get_plugins_of_type(plugin_type) if plugin_name: plugins = [p for p in plugins if p.name in plugin_name] else: plugins = list(config_service.plugins()) if include_related: add_service = ProjectAddService(project, config_service=config_service) related_plugins = add_related_plugins(project, plugins, add_service=add_service) plugins.extend(related_plugins) click.echo(f"Installing {len(plugins)} plugins...") success = install_plugins(project, plugins) tracker = GoogleAnalyticsTracker(project) tracker.track_meltano_install() if not success: raise click.Abort()