The pub package

[Tags:bsd3, program]

pub is an executable for piping data from stdin to a specified Redis pub/sub channel.

A typical use for this tool is to tail a log file, match a specific line with grep, and pipe it into Redis where multiple consumers can do something different with each incoming log line:

 tail -F /var/log/somelogfile.log | grep "tracker.gps.parsed" | pub loglines

It also comes with a utility named sub for piping from a Redis pub/sub channel to stdout:

 sub loglines | grep "somemsg"

[Skip to Readme]

Properties

Versions 1.0.0, 1.0.1, 2.0.0, 2.0.1, 2.0.2, 3.0.0
Dependencies base (>=4.9 && <5), bytestring (>=0.10.8.1 && <0.11), hedis (>=0.9.5 && <1.0), optparse-generic (>=1.1.5 && <2.0), pipes (>=4.1.9 && <5.0), pipes-bytestring (>=2.1.4 && <3.0), text (>=1.2.2.1 && <2.0) [details]
License BSD3
Author Parnell Springmeyer <parnell@digitalmentat.com>
Maintainer Parnell Springmeyer <parnell@digitalmentat.com>
Category Utility
Source repository head: git clone https://github.com/ixmatus/pub
Uploaded Mon May 29 03:34:02 UTC 2017 by ParnellSpringmeyer
Distributions NixOS:3.0.0
Downloads 957 total (8 in the last 30 days)
Votes
0 []
Status Docs not available [build log]
Last success reported on 2017-05-29 [all 3 reports]
Hackage Matrix CI

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for pub

Readme for pub-3.0.0

Welcome!

Hackage: Pub Build Status: Pub

The pub utility publishes input from stdin to a redis channel and the sub utility consumes from a redis channel, writing to stdout.

Quickstart

Publishing to Redis from stdin is easy with the pub utility:

$ pub --help
Pipe stdin to a redis pub/sub channel

Usage: pub --channel TEXT [--host STRING] [--port INTEGER] [--db INTEGER]
           [--version]

Available options:
  -h,--help                Show this help text
  --channel TEXT           Redis channel to publish to
  --host STRING            Redis host (default: localhost)
  --port INTEGER           Redis post (default: 6379)
  --db INTEGER             Redis db (default: 0)

$ journalctl -f nginx.service | pub --channel "nginx-loglines"

and subscribing to Redis channels and piping to stdout is also easy with the sub utility:

$ sub --help
Subscribe to redis channels and pipe to stdout

Usage: sub [--channel TEXT]... [--host STRING] [--port INTEGER] [--db INTEGER]
           [--version]

Available options:
  -h,--help                Show this help text
  --channel TEXT...        Redis channel(s) to subscribe to
  --host STRING            Redis host (default: localhost)
  --port INTEGER           Redis post (default: 6379)
  --db INTEGER             Redis db (default: 0)

$ sub --channel "nginx-loglines" --channel "haproxy-loglines" # This subscribes to both redis channels

Building

You can build multiple ways:

  • stack build
  • cabal build
  • nix-build --not-out-link -A pub release.nix
  • nix-shell -A pub.env release.nix