def set_readme_template_vars(self, role, repo_name): """ Set the readme template variables. """ # normalize and expose a bunch of fields to the template authors = [] author = { "name": self.config["author_name"], "company": self.config["author_company"], "url": self.config["author_url"], "email": self.config["author_email"], "twitter": self.config["author_twitter"], } scm = { "host": self.config["scm_host"], "repo_prefix": self.config["scm_repo_prefix"], "type": self.config["scm_type"], "user": self.config["scm_user"], } license = { "type": self.config["license_type"], "url": self.config["license_url"], } role_name = utils.normalize_role(role, self.config) normalized_role = { "name": role_name, "galaxy_name": "{0}.{1}".format(self.config["scm_user"], role_name), "slug": "{0}{1}".format(self.config["scm_repo_prefix"], role_name), } if "authors" in self.meta_dict["ansigenome_info"]: authors = self.meta_dict["ansigenome_info"]["authors"] else: authors = [author] if "github" in self.config["scm_host"]: self.config["author_github"] = "{0}/{1}".format( self.config["scm_host"], self.config["scm_user"]) self.readme_template_vars = { "authors": authors, "scm": scm, "role": normalized_role, "license": license, "galaxy_info": self.meta_dict["galaxy_info"], "dependencies": self.meta_dict["dependencies"], "ansigenome_info": self.meta_dict["ansigenome_info"] } # add the defaults and facts r_defaults = self.report["roles"][role]["defaults"] self.readme_template_vars["ansigenome_info"]["defaults"] = r_defaults facts = "\n".join(self.report["roles"][role]["facts"]) self.readme_template_vars["ansigenome_info"]["facts"] = facts
def __init__(self, args, options, config): self.output_path = args[0] self.options = options self.config = config self.role_name = os.path.basename(self.output_path) self.normalized_role = utils.normalize_role(self.role_name, self.config) self.exit_if_path_exists() self.create_skeleton() self.create_travis_config() self.create_test_case()
def reqs_yml(self): """ Export a requirements file in yml format. """ default_yml_item = """ - src: '%src' name: '%name' scm: '%scm' version: '%version' """ role_lines = "---\n" for role in sorted(self.report["roles"]): name = utils.normalize_role(role, self.config) galaxy_name = "{0}.{1}".format(self.config["scm_user"], name) yml_item = default_yml_item if self.config["scm_host"]: yml_item = yml_item.replace("%name", "{0}".format(galaxy_name)) if self.config["scm_repo_prefix"]: role = self.config["scm_repo_prefix"] + name src = os.path.join(self.config["scm_host"], self.config["scm_user"], role) else: src = galaxy_name yml_item = yml_item.replace(" name: '%name'\n", "") yml_item = yml_item.replace(" scm: '%scm'\n", "") yml_item = yml_item.replace("%src", src) if self.config["scm_type"]: yml_item = yml_item.replace("%scm", self.config["scm_type"]) else: yml_item = yml_item.replace(" scm: '%scm'\n", "") version_path = os.path.join(self.roles_path, role, "VERSION") version = utils.get_version(version_path) yml_item = yml_item.replace("%version", version) role_lines += "{0}".format(yml_item) if self.out_file: utils.string_to_file(self.out_file, role_lines) else: print role_lines
def reqs_txt(self): """ Export a requirements file in txt format. """ role_lines = "" for role in sorted(self.report["roles"]): name = utils.normalize_role(role, self.config) galaxy_name = "{0}.{1}".format(self.config["scm_user"], name) version_path = os.path.join(self.roles_path, role, "VERSION") version = utils.get_version(version_path) role_lines += "{0},{1}\n".format(galaxy_name, version) if self.out_file: utils.string_to_file(self.out_file, role_lines) else: print role_lines
def graph_dot(self): """ Export a graph of the data in dot format. """ default_graphviz_template = """ digraph role_dependencies { size="%size" dpi=%dpi ratio="fill" landscape=false rankdir="BT"; node [shape = "box", style = "rounded,filled", fillcolor = "lightgrey", fontsize = 20]; edge [style = "dashed", dir = "forward", penwidth = 1.5]; %roles_list %dependencies } """ roles_list = "" edges = "" # remove the darkest and brightest colors, still have 100+ colors adjusted_colors = c.X11_COLORS[125:-325] random.shuffle(adjusted_colors) backup_colors = adjusted_colors[:] for role, fields in sorted(self.report["roles"].iteritems()): name = utils.normalize_role(role, self.config) color_length = len(adjusted_colors) - 1 # reset the colors if we run out if color_length == 0: adjusted_colors = backup_colors[:] color_length = len(adjusted_colors) - 1 random_index = random.randint(1, color_length) roles_list += " role_{0} [label = \"{0}\"]\n" \ .format(re.sub(r'[.-]', '_', name)) edge = '\n edge [color = "{0}"];\n' \ .format(adjusted_colors[random_index]) del adjusted_colors[random_index] if fields["dependencies"]: dependencies = "" for dependency in sorted(fields["dependencies"]): dependency_name = utils.role_name(dependency) dependencies += " role_{0} -> role_{1}\n".format( re.sub(r'[.-]', '_', name), utils.normalize_role(dependency_name, self.config)) edges += "{0}{1}\n".format(edge, dependencies) graphviz_template = default_graphviz_template.replace( "%roles_list", roles_list) graphviz_template = graphviz_template.replace("%dependencies", edges) graphviz_template = graphviz_template.replace("%size", self.size) graphviz_template = graphviz_template.replace("%dpi", str(self.dpi)) if self.out_file: utils.string_to_file(self.out_file, graphviz_template) else: print graphviz_template
def graph_dot(self): """ Export a graph of the data in dot format. """ default_graphviz_template = """ digraph role_dependencies { size="%size" dpi=%dpi ratio="fill" landscape=false rankdir="BT"; node [shape = "box", style = "rounded,filled", fillcolor = "lightgrey", fontsize = 20]; edge [style = "dashed", dir = "forward", penwidth = 1.5]; %roles_list %dependencies } """ roles_list = "" edges = "" # remove the darkest and brightest colors, still have 100+ colors adjusted_colors = c.X11_COLORS[125:-325] random.shuffle(adjusted_colors) backup_colors = adjusted_colors[:] for role, fields in sorted(self.report["roles"].iteritems()): name = utils.normalize_role(role, self.config) color_length = len(adjusted_colors) - 1 # reset the colors if we run out if color_length == 0: adjusted_colors = backup_colors[:] color_length = len(adjusted_colors) - 1 random_index = random.randint(1, color_length) roles_list += ' "{0}" [label = "{1}"]\n'.format(name, name) edge = '\n edge [color = "{0}"];\n' \ .format(adjusted_colors[random_index]) del adjusted_colors[random_index] if fields["dependencies"]: dependencies = "" for dependency in sorted(fields["dependencies"]): dependency_name = utils.role_name(dependency) dependencies += ' "{0}" -> "{1}"\n'.format(name, dependency_name) edges += "{0}{1}\n".format(edge, dependencies) graphviz_template = default_graphviz_template.replace("%roles_list", roles_list) graphviz_template = graphviz_template.replace("%dependencies", edges) graphviz_template = graphviz_template.replace("%size", self.size) graphviz_template = graphviz_template.replace("%dpi", str(self.dpi)) if self.out_file: utils.string_to_file(self.out_file, graphviz_template) else: print graphviz_template