timrogers / litra-rs

πŸ’‘ Control your Logitech Litra light from the command line
MIT License
35 stars 4 forks source link

Video Device Selection for auto-toggle + Configuration by envvar #39

Closed Holzhaus closed 3 weeks ago

Holzhaus commented 7 months ago

Adds a way a select a single video device to monitor for the auto-toggle command.

Also, both the Litra serial number and the video device path can be configured using environment variables instead of passing it as command line argument. The following environment variables are available:

For video device selection, a serial number would be preferable, because that would theoretically work on other OSes and make it possible to add support for Windows and macOS later on. However, I'm not aware of a straightforward way to do that. Both v4l and noktha crates do not seem to expose such information.


[!IMPORTANT] Add environment variable configuration for Litra and video devices, and enhance auto-toggle to monitor specific video devices on Linux.

  • Behavior:
    • Add support for LITRA_SERIAL_NUMBER and LITRA_VIDEO_DEVICE_PATH environment variables in main.rs for configuring Litra device and video device path.
    • Enhance AutoToggle command to monitor a specific video device using video_device_bus parameter in main.rs.
    • Update error handling in main.rs to include NoVideoDevicesMonitored error.
  • Dependencies:
    • Add v4l dependency in Cargo.toml for video device handling.
    • Enable env feature for clap in Cargo.toml.
  • Misc:
    • Update get_video_devices() function in main.rs to filter video devices based on capabilities.

This description was created by Ellipsis for 85a387f74303e3644506cb2c1f3874d5c23793f3. It will automatically update as commits are pushed.

Summary by CodeRabbit

mbwilding commented 1 month ago

No plans for merging this?

timrogers commented 1 month ago

@mbwilding Happy to if it is marked as ready.

@Holzhaus Is there more to do?

Holzhaus commented 1 month ago

Nope, but the selection is kind of unreliable on my system. Using the serial number or something like that would be better.

coderabbitai[bot] commented 1 month ago

Walkthrough

The pull request introduces modifications to the Cargo.toml and src/main.rs files of the litra package. The Cargo.toml file updates the clap dependency to include a new "env" feature and adds a new optional dependency, v4l. In src/main.rs, enhancements to the command-line interface include the introduction of environment variable options for the serial_number argument and a new video_device_bus argument for the AutoToggle command. Additionally, error handling is improved, and a new error variant is added.

Changes

File Change Summary
Cargo.toml - Updated clap dependency to include "env" feature.
- Added new optional dependency v4l.
- Updated cli feature to include v4l.
src/main.rs - Added environment variable option for serial_number in multiple commands.
- Introduced video_device_bus argument in AutoToggle.
- Replaced get_video_device_paths with get_video_devices.
- Enhanced error handling in handle_autotoggle_command and added NoVideoDevicesMonitored to CliError.

Possibly related PRs

Poem

πŸ‡ In the land of code where bunnies play,
New features hop in, brightening the day.
With v4l now added, and clap in full bloom,
Our commands dance freely, dispelling the gloom.
So let’s toggle and brighten, let devices unite,
In the world of Litra, everything feels right! 🌟


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 - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
πŸͺ§ Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit , 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](https://docs.coderabbit.ai/guides/configure-coderabbit) 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](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
timrogers commented 3 weeks ago

Closing this as I've moved auto-toggling to a separate project, https://github.com/timrogers/litra-autotoggle