Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lint the validity of help categories #1518

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion tools/lint-hotkeys
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ def lint_hotkeys_file() -> None:
existing OUTPUT_FILE
"""
hotkeys_file_string = get_hotkeys_file_string()
error_flag = 0 if is_every_key_category_valid() else 1
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's rather independent of this change, but it's quite strange to me to use 0 and 1 instead of a boolean here. I know sys.exit wants to have an integer, but it should in my opinion only be converted to it at the very last moment.

# To lint keys description
error_flag = 0
categories = read_help_categories()
for action in HELP_CATEGORIES:
check_duplicate_keys_list: List[str] = []
Expand Down Expand Up @@ -91,6 +91,24 @@ def generate_hotkeys_file() -> None:
print(f"Hot Keys list saved in {OUTPUT_FILE}")


def is_every_key_category_valid() -> bool:
"""
Check for typos in key categories in KEYS_FILE
"""
error_flag = False
for key, binding in KEY_BINDINGS.items():
key_category = binding.get("key_category")
if key_category not in HELP_CATEGORIES:
print(
f"Invalid key_category '{key_category}' for key '{key}'."
f" Choose a category from:\n{', '.join(HELP_CATEGORIES.keys())}\n"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NIT: For a dev tool this isn't as important, but with this number of categories we already run quite far to the right, so a vertical list may be cleaner to read.

)
error_flag = True
if not error_flag:
print("All key bindings have valid categories.")
return not error_flag


def get_hotkeys_file_string() -> str:
"""
Construct string in form for output to OUTPUT_FILE based on help text
Expand Down
Loading