libmpd: An MPD client library.

[ library, mit, network, sound ] [ Propose Tags ]

A client library for MPD, the Music Player Daemon (http://www.musicpd.org/).


[Skip to Readme]

Flags

Manual Flags

NameDescriptionDefault
test

Build test driver

Disabled
coverage

Build driver with hpc instrumentation

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.2, 0.1.3, 0.2.0, 0.2.1, 0.3.0, 0.3.1, 0.4.0, 0.4.1, 0.4.2, 0.5.0, 0.6.0, 0.7.0, 0.7.1, 0.7.2, 0.8.0, 0.8.0.1, 0.8.0.2, 0.8.0.3, 0.8.0.4, 0.8.0.5, 0.9.0, 0.9.0.1, 0.9.0.2, 0.9.0.3, 0.9.0.4, 0.9.0.5, 0.9.0.6, 0.9.0.7, 0.9.0.8, 0.9.0.9, 0.9.0.10, 0.9.1.0, 0.9.2.0, 0.9.3.0, 0.10.0.0
Change log NEWS
Dependencies base (>=4 && <4.6), containers (>=0.3 && <0.5), filepath (>=1.0 && <1.3), mtl (>=2.0 && <2.1), network (>=2.1 && <2.4), old-locale (>=1.0 && <2.0), time (>=1.1 && <1.5), utf8-string (>=0.3.1 && <0.4) [details]
License LicenseRef-LGPL
Copyright Ben Sinclair 2005-2009, Joachim Fasting 2010, 2011
Author Ben Sinclair
Maintainer Joachim Fasting <joachim.fasting@gmail.com>
Revised Revision 2 made by HerbertValerioRiedel at 2019-05-03T22:54:29Z
Category Network, Sound
Home page http://github.com/joachifm/libmpd-haskell
Bug tracker http://github.com/joachifm/libmpd-haskell/issues
Source repo head: git clone git://github.com/joachifm/libmpd-haskell.git
Uploaded by JoachimFasting at 2011-11-22T06:35:22Z
Distributions Arch:0.10.0.0, Debian:0.9.1.0, Fedora:0.10.0.0, FreeBSD:0.9.0.2, NixOS:0.10.0.0, openSUSE:0.10.0.0
Reverse Dependencies 7 direct, 1 indirect [details]
Executables test
Downloads 41335 total (171 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for libmpd-0.7.0

[back to package description]

libmpd-haskell: a client library for MPD

About

libmpd-haskell is a client library for MPD written in Haskell that aims to provide a safe and flexible yet consistent and intuitive interface to MPD's external API.

Getting

  • Latest release
  • git clone git://github.com/joachifm/libmpd-haskell.git

There are packages available on the following systems:

Note that some of these packages are outdated.

Building

The preferred method of building libmpd-haskell is using cabal-install, which takes care of dependency resolution and other minutiae.

To install libmpd-haskell, simply run:

cd libmpd-haskell && cabal install

Running tests

To run the libmpd testsuite, do:

./tests/run-tests.lhs

Compiler support

We try to support the two last major versions of GHC, but only the latest version is actually tested for.

MPD API compliance

We try to comply with the latest version of the MPD protocol specification; any deviation from this is a bug.

Usage

With GHCi:

> import Network.MPD
> withMPD $ lsInfo ""
Right [Left "Tool", Left "Tom Waits",...]
> withMPD $ add "Tom Waits/Big Time"
Right ["Tom Waits/Big Time/01 - 16 Shells from a Thirty-Ough-Six.mp3",...]

Development

Getting started

Create the clone thus:

git clone git://github.com/joachifm/libmpd-haskell.git master

To pull in new changes from upstream, use:

git pull origin master

To set up GIT hooks, see hooks/README in the source distribution.

General guidelines

  • When writing or modifying code, please try to conform to the surrounding style

  • All bugs that exist in master should be fixed there first, and then forward-ported to other branches.

  • If you introduce new functionality, please include a test case or at least document the expected behavior.

  • Use -Wall during development and try to eliminate all warnings before submitting your patch

  • Merge the upstream branch and redo your patch if necessary before submitting it

  • Merge with upstream on a regular basis for long-running branches

  • Before merging trunk with master, all tests must pass

  • When fixing a bug, try to implement a test for it first

  • Orphan instances are bad, use newtype if at all possible. Otherwise, please use {-# OPTIONS_GHC -fno-warn-orphans #-} in the affected source file and note why it is necessary to use it. This does not apply to the test harness

Submitting patches

To submit a patch, use git format-patch and email the resulting file(s) to one of the developers or upload it to the bug tracker.

Alternatively you can create your own fork of the repository and send a pull request.

Submitting bug reports

See our bug tracker. Test cases are highly appreciated.

The release process

This outlines a general process used when cutting a new release:

  1. Decide what version component should be bumped
  2. Create a topic branch
  3. Run the test harness
  4. Fix errors
  5. Goto 3 unless there were no errors to fix
  6. Make sure README.md is correct, add any contributors
  7. Update the NEWS
  8. Create a source distribution using cabal sdist
  9. Unpack the source to a temporary location and make sure it builds and that no files are missing
  10. Goto 8 unless there were no errors to fix
  11. Merge topic branch into master
  12. Tag the release by doing git tag -a -m vVERSION vVERSION

In general, patches that fix bugs are the most critical and should be released quickly (bumping the last version component). Remember, all deviations from the MPD protocol specification are considered bugs.

In some cases, say when the MPD protocol changes to the point of not being backwards compatible, a bump in at least the minor version is required.

The same goes for making backwards incompatible API changes (e.g., deletions, type changes).

The major version indicates "completeness", and after the first 1.0.0 release, all subsequent API changes must be backwards compatible (that is, only additions are allowed).

For users this means that restricting dependencies on libmpd-haskell to only allow changes in the last version component guarantees that your code will not break due to updates. All users are nonetheless encouraged to support the latest major/minor release at any given time, because there is no backporting.

Resources

License

LGPL version 2.1 (see LICENSE)

Contributors (in order of appearance)

Ben Sinclair <ben.d.sinclair@gmail.com>

Joachim Fasting <joachim.fasting@gmail.com>

gwern0 <gwern0@gmail.com>

Daniel Schoepe <daniel.schoepe@googlemail.com>

Andrzej Rybczak <electricityispower@gmail.com>

Simon Hengel <simon.hengel@wiktory.org>

Daniel Wagner <daniel@wagner-home.com>