Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/HalosGhost/shaman

A small, native C library and utility to fetch weather
https://github.com/HalosGhost/shaman

Last synced: about 2 months ago
JSON representation

A small, native C library and utility to fetch weather

Awesome Lists containing this project

README

        

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.