def _create_label_if_needed(self, reposlug: str, repo: Repository, name: str, desc: str, color: str) -> Label: try: label = repo.get_label("devsecops") except UnknownObjectException: if self._verbose: print("[I] Creating label {}:{}".format(reposlug, name)) label = repo.create_label(name, color, desc) return label
def update_labels(repository: Repository, new: Dict[str, Dict[str, str]]): logging.info(f'Working on {repository.name}') # Edit or delete existing labels for old in repository.get_labels(): # Edit labels if fmt(old.name) in new: # Edit only if there is a difference if (old.name, old.color, old.description) != tuple(new[fmt(old.name)].values()): logging.info(f'Editing {old.name}') old.edit(*new[fmt(old.name)].values()) else: logging.info(f'Deleting {old.name}') old.delete() # Create new labels existing_labels = {fmt(x.name) for x in repository.get_labels()} for new_label in new.values(): if fmt(new_label['name']) not in existing_labels: logging.info(f'Creating {new_label["name"]}') repository.create_label(*[x for x in new_label.values() if x is not None])
def _create_label(self, repo: Repository, label: Label) -> bool: try: github_label = repo.get_label(label.name) if self._verbose: print("[I] Edit existing label: {}".format(label.name)) github_label.edit(name=label.name, color=label.color, description=label.description) except UnknownObjectException: try: if self._verbose: print("[I] Creating label {}".format(label.name)) label = repo.create_label(label.name, label.color, label.description) except Exception as e: print("[E] Error creating label {}".format(label.name), str(e)) return False return True