def lint_repository_tools(ctx, realized_repository, lint_ctx, lint_args): path = realized_repository.path for (tool_path, tool_source) in yield_tool_sources(ctx, path, recursive=True): original_path = tool_path.replace(path, realized_repository.real_path) info("+Linting tool %s" % original_path) if handle_tool_load_error(tool_path, tool_source): return True lint_tool_source_with(lint_ctx, tool_source, extra_modules=lint_args["extra_modules"])
def lint_repository_tools(ctx, realized_repository, lint_ctx, lint_args): path = realized_repository.path for (tool_path, tool_source) in yield_tool_sources(ctx, path, recursive=True): original_path = tool_path.replace(path, realized_repository.real_path) info("+Linting tool %s" % original_path) if handle_tool_load_error(tool_path, tool_source): return True lint_tool_source_with( lint_ctx, tool_source, extra_modules=lint_args["extra_modules"] )
def _build_auto_tool_repos(ctx, path, config, auto_tool_repos): default_include = config.get("include", ["**"]) tool_source_pairs = list(yield_tool_sources(ctx, path, recursive=True)) paths = [_[0] for _ in tool_source_pairs] excludes = _shed_config_excludes(config) def _build_repository(tool_path, tool_source): tool_id = tool_source.parse_id().lower() tool_name = tool_source.parse_name() description = tool_source.parse_description() template_vars = dict( tool_id=tool_id, tool_name=tool_name, description=description, ) other_paths = paths[:] other_paths.remove(tool_path) tool_excludes = excludes + list(other_paths) repo_dict = { "include": default_include, "exclude": tool_excludes, } for key in ["name", "description", "long_description"]: template_key = "%s_template" % key template = auto_tool_repos.get(template_key) if template: value = templates.render(template, **template_vars) repo_dict[key] = value return repo_dict repos = odict.odict() for tool_path, tool_source in tool_source_pairs: repository_config = _build_repository(tool_path, tool_source) repository_name = repository_config["name"] repos[repository_name] = repository_config return repos
def _build_auto_tool_repos(ctx, path, config, auto_tool_repos): default_include = config.get("include", ["**"]) tool_source_pairs = list(yield_tool_sources(ctx, path, recursive=True)) paths = list(map(lambda pair: pair[0], tool_source_pairs)) excludes = _shed_config_excludes(config) def _build_repository(tool_path, tool_source): tool_id = tool_source.parse_id().lower() tool_name = tool_source.parse_name() description = tool_source.parse_description() template_vars = dict( tool_id=tool_id, tool_name=tool_name, description=description, ) other_paths = paths[:] other_paths.remove(tool_path) tool_excludes = excludes + list(other_paths) repo_dict = { "include": default_include, "exclude": tool_excludes, } for key in ["name", "description", "long_description"]: template_key = "%s_template" % key template = auto_tool_repos.get(template_key, None) if template: value = templates.render(template, **template_vars) repo_dict[key] = value return repo_dict repos = odict.odict() for tool_path, tool_source in tool_source_pairs: repository_config = _build_repository(tool_path, tool_source) repository_name = repository_config["name"] repos[repository_name] = repository_config return repos
def lint_repository(ctx, realized_repository, **kwds): """Lint a realized shed repository. See :module:`planemo.shed` for details on constructing a realized repository data structure. """ # TODO: this really needs to start working with realized path. failed = False path = realized_repository.real_path info("Linting repository %s" % path) lint_args, lint_ctx = setup_lint(ctx, **kwds) lint_ctx.lint( "lint_expansion", lint_expansion, realized_repository, ) lint_ctx.lint( "lint_expected_files", lint_expected_files, realized_repository, ) lint_ctx.lint( "lint_tool_dependencies_xsd", lint_tool_dependencies_xsd, path, ) lint_ctx.lint( "lint_tool_dependencies_sha256sum", lint_tool_dependencies_sha256sum, path, ) lint_ctx.lint( "lint_tool_dependencies_actions", lint_tool_dependencies_actions, path, ) lint_ctx.lint( "lint_repository_dependencies", lint_repository_dependencies, path, ) lint_ctx.lint( "lint_shed_yaml", lint_shed_yaml, realized_repository, ) lint_ctx.lint( "lint_readme", lint_readme, path, ) if kwds["urls"]: lint_ctx.lint( "lint_urls", lint_tool_dependencies_urls, path, ) if kwds["tools"]: for (tool_path, tool_source) in yield_tool_sources(ctx, path, recursive=True): info("+Linting tool %s" % tool_path) if handle_tool_load_error(tool_path, tool_source): failed = True continue lint_tool_source_with( lint_ctx, tool_source, extra_modules=lint_args["extra_modules"] ) if kwds["ensure_metadata"]: lint_ctx.lint( "lint_shed_metadata", lint_shed_metadata, realized_repository, ) return handle_lint_complete(lint_ctx, lint_args, failed=failed)
def lint_repository(ctx, realized_repository, **kwds): """Lint a realized shed repository. See :module:`planemo.shed` for details on constructing a realized repository data structure. """ # TODO: this really needs to start working with realized path. failed = False path = realized_repository.real_path info("Linting repository %s" % path) lint_args, lint_ctx = setup_lint(ctx, **kwds) lint_ctx.lint( "lint_expansion", lint_expansion, realized_repository, ) lint_ctx.lint( "lint_expected_files", lint_expected_files, realized_repository, ) lint_ctx.lint( "lint_tool_dependencies_xsd", lint_tool_dependencies_xsd, path, ) lint_ctx.lint( "lint_tool_dependencies_sha256sum", lint_tool_dependencies_sha256sum, path, ) lint_ctx.lint( "lint_tool_dependencies_actions", lint_tool_dependencies_actions, path, ) lint_ctx.lint( "lint_repository_dependencies", lint_repository_dependencies, path, ) lint_ctx.lint( "lint_shed_yaml", lint_shed_yaml, realized_repository, ) lint_ctx.lint( "lint_readme", lint_readme, path, ) if kwds["urls"]: lint_ctx.lint( "lint_urls", lint_tool_dependencies_urls, path, ) if kwds["tools"]: for (tool_path, tool_source) in yield_tool_sources(ctx, path, recursive=True): info("+Linting tool %s" % tool_path) if handle_tool_load_error(tool_path, tool_source): failed = True continue lint_tool_source_with(lint_ctx, tool_source, extra_modules=lint_args["extra_modules"]) if kwds["ensure_metadata"]: lint_ctx.lint( "lint_shed_metadata", lint_shed_metadata, realized_repository, ) return handle_lint_complete(lint_ctx, lint_args, failed=failed)