A feature-rich Rust-based command-line interface for weather forecasting with a clean, minimalist design and interactive charts with calendar view.
- Current weather conditions
- Hourly and daily forecasts
- Location auto-detection (IP-based)
- Custom location specification
- No API key required (uses Open-Meteo)
- Weather recommendations
- Support for metric/imperial units
- Interactive mode with menu-based navigation
- Interactive charts with calendar view
- Hourly temperature trends
- Hourly precipitation probability
- Daily temperature ranges
- Daily precipitation forecast
- Calendar view for historical and future dates
- Automatic chart display after weather information
- JSON output option for scripting
cargo install weather_man
You can also check out the weather_man package on crates.io for more information.
git clone https://github.com/sorinirimies/weather_man.git
cd weather_man
cargo build --release
The executable will be available at target/release/weather_man
.
# Current weather at auto-detected location
weather_man
# Specify a location
weather_man --location "New York"
# Daily forecast
weather_man --mode daily
# Hourly forecast
weather_man --mode hourly
# Full weather report
weather_man --mode full
# Interactive mode
weather_man --mode interactive
# Disable charts display (text output only)
weather_man --no-charts
# Charts are shown by default after displaying weather information
# Use imperial units
weather_man --units imperial
# Output as JSON (for scripting)
weather_man --json
Option | Description |
---|---|
--mode , -m |
Display mode: current, forecast, hourly, daily, full, interactive, charts |
--location , -l |
Location to check weather for (default: auto-detect) |
--units , -u |
Units to display: metric, imperial, standard (default: metric) |
--detail , -d |
Level of detail: basic, standard, detailed, debug |
--json , -j |
Output results as JSON |
--no-animations , -a |
Disable animations |
--no-charts |
Disable charts display (text output only) |
Weather Man includes interactive charts for visualizing weather data:
- Hourly Temperature Chart: Line chart showing temperature trends over the next 24 hours
- Hourly Precipitation Chart: Bar chart showing precipitation probability for each hour
- Daily Temperature Chart: Line chart showing min/max temperature ranges for the next 7 days
- Daily Precipitation Chart: Bar chart showing daily precipitation probability with condition information
Charts are displayed automatically after viewing weather information without requiring any user input.
Navigate between charts using:
- Arrow keys or Tab: Switch between chart tabs
- Keys 1-4: Jump directly to specific charts
- Q or Esc: Exit charts view
- Rust 1.70 or newer
- Cargo
cargo build
cargo test
We use git-cliff to generate changelogs:
git cliff --output CHANGELOG.md
- Update version in Cargo.toml
- Create a new tag:
git tag -a v0.1.0 -m "Release v0.1.0"
- Push the tag:
git push origin v0.1.0
- GitHub Actions will automatically generate the changelog and publish to crates.io
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes using conventional commits (
git commit -m 'feat: add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
Please follow the Conventional Commits format for your commit messages to ensure proper changelog generation.
This project is licensed under the MIT License - see the LICENSE file for details.
- Weather data provided by Open-Meteo
- Geocoding services by Nominatim/OpenStreetMap