Skip to content

Commit

Permalink
[FIX] Incomplete labels on non-destructive sync (#153)
Browse files Browse the repository at this point in the history
* fix (setup gh label): incomplete labels on non-destructive sync

* chore (gh api types): remove bool

* fix: types
  • Loading branch information
seyLu authored Apr 6, 2024
1 parent 3c7ce99 commit 4dabf2a
Showing 1 changed file with 14 additions and 13 deletions.
27 changes: 14 additions & 13 deletions src/ghlabel/utils/setup_github_label.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ def __init__(
self._labels: list[GithubLabel] = self._load_labels_from_config() or []
self._label_name_urls_map: dict[str, set[str]] = {}
self._labels_unsafe_to_remove: set[str] = set()
self._labels_safe_to_remove: set[str] = self._list_labels_safe_to_remove()

@property
def labels_dir(self) -> str:
Expand All @@ -76,10 +75,6 @@ def label_name_urls_map(self) -> dict[str, set[str]]:
def labels_unsafe_to_remove(self) -> set[str]:
return self._labels_unsafe_to_remove

@property
def labels_safe_to_remove(self) -> set[str]:
return self._labels_safe_to_remove

@property
def gh_api(self) -> GithubApi:
return self._gh_api
Expand All @@ -97,10 +92,12 @@ def _format_github_label(self, github_label: GithubLabel) -> GithubLabel:
if key not in ["id", "node_id", "url", "default"]
}

def _list_labels_safe_to_remove(self) -> set[str]:
all_labels_to_remove: set[str] = set(
self._load_labels_to_remove_from_config() or []
)
def _list_labels_safe_to_remove(
self, label_names: set[str] | None = None
) -> set[str]:
all_labels_to_remove: set[str] = self._load_labels_to_remove_from_config()
if label_names:
all_labels_to_remove.update(label_names)
labels_unsafe_to_remove: set[str] = set()

gh_issues: list[GithubIssue]
Expand Down Expand Up @@ -193,7 +190,7 @@ def _load_labels_from_config(self) -> list[GithubLabel]:

return labels

def _load_labels_to_remove_from_config(self) -> list[str]:
def _load_labels_to_remove_from_config(self) -> set[str]:
labels_to_remove: list[str] = []

files_in_labels_dir: list[str] = os.listdir(self.labels_dir)
Expand Down Expand Up @@ -233,7 +230,7 @@ def _load_labels_to_remove_from_config(self) -> list[str]:
elif label_to_remove_ext == "json":
labels_to_remove = json.load(f)

return labels_to_remove
return set(labels_to_remove)

def remove_all_labels(self, silent: bool = False, preview: bool = False) -> None:
confirmation: bool = False
Expand All @@ -255,7 +252,7 @@ def remove_labels(
strict: bool = False,
preview: bool = False,
) -> None:
labels_to_remove: set[str] = self.labels_safe_to_remove
labels_to_remove: set[str] = set()

if strict:
labels_to_remove.update(
Expand All @@ -266,6 +263,10 @@ def remove_labels(
if labels:
labels_to_remove.update(labels)

labels_safe_to_remove: set[str] = self._list_labels_safe_to_remove(
label_names=labels_to_remove
)

if preview:
rich.print(" will [red]remove[/red] the following labels:")
is_remove_label: bool = False
Expand All @@ -281,7 +282,7 @@ def remove_labels(
rich.print()
return

for label_name in labels_to_remove:
for label_name in labels_safe_to_remove:
if label_name in self.github_label_names:
self.gh_api.delete_label(label_name)

Expand Down

0 comments on commit 4dabf2a

Please sign in to comment.