-
Notifications
You must be signed in to change notification settings - Fork 10
feat: add 'Did you mean?' suggestions for unknown flags #234
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
base: main
Are you sure you want to change the base?
Conversation
Fixes #205 When users provide an unknown flag (e.g., --if-exist instead of --if-exists), the error now includes a helpful suggestion pointing to the most similar valid flag. Implementation details: - Added Levenshtein distance algorithm for string similarity matching - Extract valid flag names from struct tags using reflection - Wrap unknown flag errors with hints suggesting closest matches - Only suggest flags within reasonable edit distance to avoid unrelated suggestions The suggestion mechanism uses the existing hint package to display helpful messages like "Did you mean '--if-exists'?" when typos occur. This improves the developer experience, especially for newcomers who may make minor typos in flag names.
Summary of ChangesHello @gilescope, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly enhances the command-line interface's robustness and user-friendliness by automatically suggesting correct flag names when a user makes a typo. By leveraging string similarity algorithms and reflection, it provides intelligent, context-aware feedback, making the tool more forgiving and easier to use for both new and experienced users. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
➖ Are we earthbuild yet?No change in "earthly" occurrences 📈 Overall Progress
Keep up the great work migrating from Earthly to Earthbuild! 🚀 💡 Tips for finding more occurrencesRun locally to see detailed breakdown: ./.github/scripts/count-earthly.shNote that the goal is not to reach 0. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request introduces a 'Did you mean?' feature for unknown command-line flags, which is a great improvement for user experience. The implementation uses the Levenshtein distance algorithm to find the closest match. My review focuses on improving the robustness and efficiency of the new implementation. I've suggested using type assertion for error handling instead of string matching for better resilience, and an optimization for the Levenshtein distance algorithm to reduce memory usage. The added tests are comprehensive and cover the new functionality well.
|
|
||
| // findClosestFlag finds the most similar flag name to the given unknown flag. | ||
| // Returns the suggested flag and whether a good suggestion was found. | ||
| func findClosestFlag(unknownFlag string, validFlags []string) (string, bool) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
bool is redundant. The empty string indicates that no closest match was found.
|
|
||
| // extractUnknownFlagFromError extracts the flag name from an "unknown flag" error. | ||
| // Uses type assertion to check for the specific error type from go-flags library. | ||
| func extractUnknownFlagFromError(err error) (string, bool) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same here, bool is redundant
Fixes #205
When users provide an unknown flag (e.g., --if-exist instead of --if-exists), the error now includes a helpful suggestion pointing to the most similar valid flag.
Implementation details:
The suggestion mechanism uses the existing hint package to display helpful messages like "Did you mean '--if-exists'?" when typos occur.
This improves the developer experience, especially for newcomers who may make minor typos in flag names.