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 all commits
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
28 changes: 23 additions & 5 deletions 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 = not is_every_key_category_valid()
# To lint keys description
error_flag = 0
categories = read_help_categories()
for action in HELP_CATEGORIES:
check_duplicate_keys_list: List[str] = []
Expand All @@ -53,7 +53,7 @@ def lint_hotkeys_file() -> None:
f"Description - ({help_text}) for key combination - [{various_key_combinations}]\n"
"It should contain only alphabets, spaces and special characters except ."
)
error_flag = 1
error_flag = True
# Check key combination duplication
check_duplicate_keys_list = [
key for key in check_duplicate_keys_list if key not in KEYS_TO_EXCLUDE
Expand All @@ -67,16 +67,16 @@ def lint_hotkeys_file() -> None:
print(
f"Duplicate key combination for keys {duplicate_keys} for category ({HELP_CATEGORIES[action]}) detected"
)
error_flag = 1
if error_flag == 1:
error_flag = True
if error_flag:
print(f"Rerun this command after resolving errors in config/{KEYS_FILE_NAME}")
else:
print("No hotkeys linting errors")
if not output_file_matches_string(hotkeys_file_string):
print(
f"Run './tools/{SCRIPT_NAME} --fix' to update {OUTPUT_FILE_NAME} file"
)
error_flag = 1
error_flag = True
sys.exit(error_flag)
Comment on lines +79 to 80
Copy link
Collaborator

Choose a reason for hiding this comment

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

While this likely works, an explicit conversion here would be good, as per #1518 (comment)



Expand All @@ -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