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

feat:add headless arg to help #629

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

SafetyQuincyF
Copy link
Collaborator

@SafetyQuincyF SafetyQuincyF commented Oct 31, 2024

Description

Add --headless to help option for safety.

image

Type of Change

  • Bug fix
  • New feature
  • Documentation update
  • Refactor
  • Other (please describe):

Testing

  • Tests added or updated
  • No tests required

Checklist

  • Code is well-documented
  • Changelog is updated (if needed)
  • No sensitive information (e.g., keys, credentials) is included in the code
  • All PR feedback is addressed

Summary by CodeRabbit

  • New Features

    • Added a new debugging configuration for the "safety" module to easily access help information.
    • Introduced a new command-line option for headless authentication, providing users with guidance on its usage.
  • Documentation

    • Enhanced the help description for the authentication process, including details on automatic browser opening and headless authentication.
    • Added deprecation warnings for older commands, guiding users towards the new command structure.

Copy link

coderabbitai bot commented Oct 31, 2024

Walkthrough

A new debugging configuration named "Safety --help" has been added to the .vscode/launch.json file, allowing users to launch the "safety" module with the --help argument. Additionally, the CLI_AUTH_COMMAND_HELP string in safety/scan/constants.py has been updated from a single-line to a multi-line format, providing a clearer explanation of the authentication process, including details on headless authentication. The command-line interface has also been modified to remove the stage parameter and introduce a new --headless option.

Changes

File Change Summary
.vscode/launch.json Added a new debugging configuration: "Safety --help" to launch the "safety" module with --help.
safety/scan/constants.py Updated CLI_AUTH_COMMAND_HELP from a single-line to a multi-line string for better clarity; added CLI_HEADLESS_AUTH_HELP.
safety/auth/cli_utils.py Removed stage parameter from auth_options, added --headless option, and updated imports to include CLI_HEADLESS_AUTH_HELP.
safety/cli.py Removed stage parameter from auth_options decorators in check and license commands; retained print_deprecation_message function.

Possibly related PRs

Suggested reviewers

  • dylanpulver

🐰 In the meadow, where rabbits hop,
A new help command, we can't stop!
With safety's guide, so clear and bright,
Debugging's now a pure delight!
Hooray for changes, big and small,
In our cozy burrow, we welcome all! 🌼


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@SafetyQuincyF SafetyQuincyF self-assigned this Oct 31, 2024
@SafetyQuincyF SafetyQuincyF added the enhancement Suggests an improvement or new feature. label Oct 31, 2024
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Outside diff range and nitpick comments (1)
safety/scan/constants.py (1)

19-25: LGTM! Clear and well-structured help text.

The updated help text effectively communicates both standard and headless authentication options with clear examples.

Consider adding the [nhc] (no highlight color) tags around the URL for consistency with other help texts in the file:

 CLI_AUTH_COMMAND_HELP = (
     "Authenticate with Safety CLI to perform scans.\n"
-    "If already authenticated, your default browser will automatically open to https://platform.safetycli.com."
+    "If already authenticated, your default browser will automatically open to [nhc]https://platform.safetycli.com[/nhc]."
     "\nExample: safety auth login\n"
     "For headless authentication, you will receive a URL to paste into an external browser."
     "\nExample: safety auth login --headless"
 )
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 9ee0b67 and cc676e5.

📒 Files selected for processing (2)
  • .vscode/launch.json (1 hunks)
  • safety/scan/constants.py (1 hunks)
🔇 Additional comments (2)
.vscode/launch.json (1)

4-13: LGTM! The debug configuration is well-structured.

The new "Safety --help" configuration follows the established pattern and maintains consistency with other configurations in the file.

safety/scan/constants.py (1)

19-25: Verify documentation and usage consistency.

Let's ensure the headless authentication is properly documented across the codebase.

✅ Verification successful

Documentation and implementation are consistent with headless authentication

The changes to CLI_AUTH_COMMAND_HELP are properly reflected across the codebase:

  • The headless feature is documented in CHANGELOG.md (version 3.1.0)
  • The auth CLI implementation in safety/auth/cli.py includes the headless flag
  • The README.md provides basic auth instructions without being too detailed, which is appropriate
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for related documentation and usage of auth commands

# Test 1: Look for documentation files that might need updates
echo "Checking documentation files..."
rg -l "auth.*login" --type md

# Test 2: Look for test files that might need updates for headless mode
echo "Checking test files..."
rg -l "CLI_AUTH.*HELP" --type py

# Test 3: Look for command implementation files
echo "Checking command implementations..."
rg -l "auth.*login.*headless" --type py

Length of output: 409


Script:

#!/bin/bash
# Let's check the content of these files to verify consistency

# Check README.md content around auth login
echo "=== README.md auth login section ==="
rg -A 5 -B 5 "auth.*login" README.md

# Check CHANGELOG.md for related changes
echo -e "\n=== CHANGELOG.md relevant entries ==="
rg -A 2 -B 2 "auth.*login|headless" CHANGELOG.md

# Check auth CLI implementation
echo -e "\n=== auth/cli.py implementation ==="
rg -A 10 -B 2 "CLI_AUTH.*HELP|auth.*login.*headless" safety/auth/cli.py

Length of output: 3500

.vscode/launch.json Show resolved Hide resolved
safety/scan/constants.py Outdated Show resolved Hide resolved
Copy link
Collaborator

@dylanpulver dylanpulver left a comment

Choose a reason for hiding this comment

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

Hey @SafetyQuincyF this is great! I was thinking we should add a line to our options section of the help:
image

@SafetyQuincyF SafetyQuincyF force-pushed the feat-add-headless-to-help branch 2 times, most recently from 82a2222 to 7ff780b Compare October 31, 2024 22:50
@SafetyQuincyF
Copy link
Collaborator Author

SafetyQuincyF commented Oct 31, 2024

I am benching this due to complexity adding --headless to options would require a rewrite of how auth login is done.
@dylanpulver

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Outside diff range and nitpick comments (1)
safety/auth/cli_utils.py (1)

14-14: Clean up unused imports.

Remove the unused CLI_STAGE_HELP import. Additionally, verify if the Stage import is still needed since the stage parameter has been removed from auth_options.

-from safety.scan.constants import CLI_HEADLESS_AUTH_HELP, CLI_KEY_HELP, CLI_PROXY_HOST_HELP, CLI_PROXY_PORT_HELP, CLI_PROXY_PROTOCOL_HELP, CLI_STAGE_HELP
+from safety.scan.constants import CLI_HEADLESS_AUTH_HELP, CLI_KEY_HELP, CLI_PROXY_HOST_HELP, CLI_PROXY_PORT_HELP, CLI_PROXY_PROTOCOL_HELP
🧰 Tools
🪛 Ruff

14-14: safety.scan.constants.CLI_STAGE_HELP imported but unused

Remove unused import: safety.scan.constants.CLI_STAGE_HELP

(F401)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between cc676e5 and 9b204de.

📒 Files selected for processing (4)
  • .vscode/launch.json (1 hunks)
  • safety/auth/cli_utils.py (2 hunks)
  • safety/cli.py (3 hunks)
  • safety/scan/constants.py (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • .vscode/launch.json
  • safety/scan/constants.py
🧰 Additional context used
🪛 Ruff
safety/auth/cli_utils.py

14-14: safety.scan.constants.CLI_STAGE_HELP imported but unused

Remove unused import: safety.scan.constants.CLI_STAGE_HELP

(F401)

🔇 Additional comments (3)
safety/auth/cli_utils.py (1)

139-153: ⚠️ Potential issue

Critical: Incomplete implementation of headless authentication.

The PR objective mentions that implementing the headless option requires rewriting the authentication login process. However, the current changes only add the CLI option without:

  1. Propagating the headless flag through the auth flow
  2. Updating the inject_session function to handle headless authentication
  3. Removing the stage parameter from inject_session's inner function

Let's verify the auth flow implementation:

Would you like assistance in implementing the complete headless authentication flow?

Also applies to: 167-238

safety/cli.py (2)

470-470: LGTM! Consistent with previous auth_options change

The removal of stage=False parameter is consistent with the change in the check command, maintaining uniformity in the authentication logic.


281-281: Verify removal of stage parameter from auth_options

The removal of stage=False parameter from auth_options decorator appears to be part of authentication logic simplification.

✅ Verification successful

Removal of stage parameter from auth_options is consistent

The verification shows that:

  1. The stage parameter has been completely removed from the auth_options decorator implementation in safety/auth/cli_utils.py
  2. All usages of auth_options in the codebase have been updated to remove the stage parameter
  3. Git history confirms this was a deliberate change, removing stage=False from all command decorators
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any remaining usages of stage parameter in auth_options
# Test: Search for auth_options with stage parameter. Expect: No occurrences.
rg -A 2 "@auth_options\(.*stage.*\)"

Length of output: 38


Script:

#!/bin/bash
# Let's first check all usages of auth_options decorator to understand the pattern
rg -B 1 -A 2 "@auth_options"

# Also check the implementation of auth_options to understand the parameters
fd "auth_options" --exec cat {}

Length of output: 786


Script:

#!/bin/bash
# Let's check the auth_options implementation in the codebase
rg -B 5 -A 10 "def auth_options"

# Also check for any historical usage of stage parameter
git log -p | rg -B 3 -A 3 "auth_options.*stage"

Length of output: 2842

Comment on lines +150 to +151
func = click.option("--headless",
help=CLI_HEADLESS_AUTH_HELP)(func)
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Add type annotation and default value for the headless option.

The --headless option should include a type annotation and default value for consistency with other CLI options.

-        func = click.option("--headless",
-            help=CLI_HEADLESS_AUTH_HELP)(func)
+        func = click.option("--headless", is_flag=True, default=False,
+            help=CLI_HEADLESS_AUTH_HELP)(func)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
func = click.option("--headless",
help=CLI_HEADLESS_AUTH_HELP)(func)
func = click.option("--headless", is_flag=True, default=False,
help=CLI_HEADLESS_AUTH_HELP)(func)

@@ -703,8 +703,7 @@ def configure(ctx, proxy_protocol, proxy_host, proxy_port, proxy_timeout,
for key, value in proxy_config.items():
config.set(PROXY_SECTION_NAME, key, value)

if stage:
config['host'] = {'stage': "development" if stage == "dev" else stage}

Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Critical: Remove unused stage parameter from configure function

The stage parameter is referenced in the function signature but was removed from the parameters list. This could lead to runtime errors.

Apply this diff to fix the issue:

def configure(ctx, proxy_protocol, proxy_host, proxy_port, proxy_timeout,
-             proxy_required, organization_id, organization_name, stage,
+             proxy_required, organization_id, organization_name,
              save_to_system):

Committable suggestion skipped: line range outside the PR's diff.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Suggests an improvement or new feature.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants