예제 #1
0
파일: scan.py 프로젝트: dr1s/ansigenome
    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
예제 #2
0
    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()
예제 #3
0
파일: init.py 프로젝트: dr1s/ansigenome
    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()
예제 #4
0
    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
예제 #5
0
    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
예제 #6
0
    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
예제 #7
0
    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
예제 #8
0
    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
예제 #9
0
    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
예제 #10
0
    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