diff --git a/ansigenome/constants.py b/ansigenome/constants.py index 27f502f..8d1ad43 100644 --- a/ansigenome/constants.py +++ b/ansigenome/constants.py @@ -124,6 +124,10 @@ - jessie categories: [%categories] +""" + +DEFAULT_AG_FILE = """--- + ansigenome_info: galaxy_id: '' @@ -137,8 +141,8 @@ #custom: | # Any custom output you want after the usage section... -""" +""" LOG_COLOR = { "ok": "green", diff --git a/ansigenome/scan.py b/ansigenome/scan.py index 5f6b719..6eed909 100644 --- a/ansigenome/scan.py +++ b/ansigenome/scan.py @@ -108,6 +108,11 @@ def scan_roles(self): self.paths["role"] = os.path.join(self.roles_path, key) self.paths["meta"] = os.path.join(self.paths["role"], "meta", "main.yml") + self.paths["ansigenome"] = os.path.join( + self.paths["role"], + "meta", + "ansigenome.yml" + ) self.paths["readme"] = os.path.join(self.paths["role"], "README.{0}" .format(self.readme_format)) @@ -119,14 +124,14 @@ def scan_roles(self): # we are writing a readme file which means the state of the role # needs to be updated before it gets output by the ui if self.gendoc: - if self.valid_meta(key): + if self.read_and_valid_meta(key): self.make_meta_dict_consistent() self.set_readme_template_vars(key, value) self.write_readme(key) # only load the meta file when generating meta files elif self.genmeta: self.make_or_augment_meta(key) - if self.valid_meta(key): + if self.read_and_valid_meta(key): self.make_meta_dict_consistent() self.write_meta(key) else: @@ -336,12 +341,15 @@ def tally_role_columns(self): totals["files"] = sum(roles[item]["total_files"] for item in roles) totals["lines"] = sum(roles[item]["total_lines"] for item in roles) - def valid_meta(self, role): + def read_and_valid_meta(self, role): """ - Return whether or not the meta file being read is valid. + Read the meta files and return whether or not the meta file being read + is valid. """ if os.path.exists(self.paths["meta"]): self.meta_dict = utils.yaml_load(self.paths["meta"]) + if os.path.exists(self.paths["ansigenome"]): + self.meta_dict['ansigenome_info'] = utils.yaml_load(self.paths["ansigenome"])['ansigenome_info'] else: self.report["state"]["missing_meta_role"] += 1 self.report["roles"][role]["state"] = "missing_meta" @@ -366,6 +374,11 @@ def make_or_augment_meta(self, role): self.report["state"]["ok_role"] += 1 self.report["roles"][role]["state"] = "ok" + if not os.path.exists(self.paths["ansigenome"]): + ag_meta_file = c.DEFAULT_AG_FILE + ag_meta_file = meta_file.replace("%role_name", role) + utils.string_to_file(self.paths['ansigenome'], c.DEFAULT_AG_FILE) + # swap values in place to use the config values swaps = [ ("author", self.config["author_name"]), @@ -420,10 +433,7 @@ def augment_main_keys(self, keys, file): for key in keys: if key[0] not in nfile: - if key[0] == "ansigenome_info": - # make sure ansigenome_info is always on the bottom - nfile = nfile + "\n{0}".format(ansigenome_block) - else: + if key[0] != "ansigenome_info": nfile = "\n{0}: {1}\n\n".format(key[0], key[1]) + nfile return nfile