chore: added env variable default and graceful failure
d947e5c0
2 file(s) · +23 −4
| 8 | 8 | bullets <feed-url> [feed-url ...] |
|
| 9 | 9 | ``` |
|
| 10 | 10 | ||
| 11 | + | Or set feeds via environment variable (comma-separated): |
|
| 12 | + | ||
| 13 | + | ```sh |
|
| 14 | + | export BULLETS_FEEDS=https://example.com/feed.xml,stevedylan.dev |
|
| 15 | + | ``` |
|
| 16 | + | ||
| 11 | 17 | Feed discovery included — bare domains (e.g. `stevedylan.dev`) are probed for RSS/Atom feeds automatically. |
|
| 12 | 18 | ||
| 13 | 19 | ## Keybindings |
| 106 | 106 | ||
| 107 | 107 | fn main() -> color_eyre::Result<()> { |
|
| 108 | 108 | color_eyre::install()?; |
|
| 109 | - | let urls: Vec<String> = std::env::args().skip(1).collect(); |
|
| 109 | + | let mut urls: Vec<String> = std::env::args().skip(1).collect(); |
|
| 110 | + | if urls.is_empty() { |
|
| 111 | + | if let Ok(val) = std::env::var("BULLETS_FEEDS") { |
|
| 112 | + | urls = val |
|
| 113 | + | .split(',') |
|
| 114 | + | .map(|s| s.trim().to_string()) |
|
| 115 | + | .filter(|s| !s.is_empty()) |
|
| 116 | + | .collect(); |
|
| 117 | + | } |
|
| 118 | + | } |
|
| 110 | 119 | if urls.is_empty() { |
|
| 111 | - | return Err(color_eyre::eyre::eyre!( |
|
| 112 | - | "Usage: bullets <feed-url> [feed-url ...]" |
|
| 113 | - | )); |
|
| 120 | + | eprintln!("No feeds provided.\n"); |
|
| 121 | + | eprintln!("Usage:"); |
|
| 122 | + | eprintln!(" bullets <feed-url> [feed-url ...]"); |
|
| 123 | + | eprintln!(" bullets https://example.com/feed.xml other.com/rss"); |
|
| 124 | + | eprintln!("\nOr set the BULLETS_FEEDS environment variable:"); |
|
| 125 | + | eprintln!(" export BULLETS_FEEDS=https://example.com/feed.xml,https://other.com/rss"); |
|
| 126 | + | std::process::exit(1); |
|
| 114 | 127 | } |
|
| 115 | 128 | let feeds: Vec<ParsedFeed> = urls |
|
| 116 | 129 | .iter() |