def parse_packages(self): discovery = PluginDiscoveryService(self.project) model_plugins = discovery.get_plugins_of_type(PluginType.MODELS) for package in self.packages(): if not package.topics and package.tables: raise MeltanoAnalysisMissingTopicFilesError( f"Missing topic file(s) for package {package}") for table in package.tables: conf = self.parse_m5o_file(table) parsed_table = self.table(conf, table.name) self.tables.append(parsed_table) for topic in package.topics: conf = self.parse_m5o_file(topic) parsed_topic = self.topic(conf, topic.name) model = next( (plugin for plugin in model_plugins if plugin.name == package.name), None, ) parsed_topic[ "plugin_namespace"] = model.namespace if model else None parsed_topic["namespace"] = package.name self.packaged_topics.append(parsed_topic) # Reset the tables list so that tables with the same name from # different packages are not interfearing with correctly parsing # the packages that follow self.tables = [] return self.packaged_topics
def discover(project, plugin_type): discover_service = PluginDiscoveryService(project) if plugin_type == "all": plugin_types = list(PluginType) else: plugin_types = [PluginType.from_cli_argument(plugin_type)] for i, plugin_type in enumerate(plugin_types): if i > 0: click.echo() click.secho(f"{str(plugin_type).capitalize()}", fg="green") for plugin_def in discover_service.get_plugins_of_type(plugin_type): click.echo(plugin_def.name, nl=False) if len(plugin_def.variants) > 1: click.echo(f", variants: {plugin_def.variant_labels}") else: click.echo() tracker = GoogleAnalyticsTracker(project) tracker.track_meltano_discover(plugin_type=plugin_type)