/shaman

A small, native C library and utility to fetch weather

Primary LanguageCGNU General Public License v2.0GPL-2.0

Shaman

Originally inspired by a tool called weatherman, shaman is a small, native C utilty relying on a small, native C library (libweather) to fetch current weather conditions. For the moment, libweather and shaman support grabbing weather from OpenWeatherMap (which draws data from various sources accounting for nearly 80000 cities). However, because the library uses a source-agnostic data structure, other weather providers can be easily added. The only requirement for a new provider (which may become less stringent) is that they have a JSON API.

If you would like to see support for a particular weather provider added to shaman and libweather, please open a bug report listing the name of the provider, along with a link to their JSON API. NOTE: Implementing other providers is a lower priority than getting shaman and libweather usable with current functionality.

Dependencies

shaman and libweather are being written to use as few dependencies as possible while still trying to keep the utilities themselves light-weight. To that end, they now both require only two external dependencies:

  • curl, which handles all network interaction very gracefully
  • jansson, which allows for very efficient JSON Parsing
  • tup, the build system that I will use going forward
  • sphinx, for building the man-page from reStructuredText

For a variety of reasons, mainly because shaman does not rely on parallelization at the moment and because of -Weverything, I will no longer be officially supporting gcc. Resultingly, to use the official build system, you will need clang installed. Ideally, when I get a continuous integration setup again, I will have the build tested against both compilers.

Status & Documentation

shaman is still under heavy active development. For the moment, the manual documentation is quite out-of-date. The best ways to follow its status and functionality are to track the commit list and keep up with the To-do lists.

Contributions

All contributions are welcome (pull requests, constructive criticism, feature requests and musings), but pull requests should attempt to follow these guidelines for consistency. I am likely to reformat any commit that should deviate from these guidelines.