Pagepipe brings the power of pipes to the web. Use it on the command line to stream the output of a process to any browser (well, except for IE since it doesn't support EventSource). It works great on Windows, Mac and Linux/Unix machines.
The full documentation along with options and example usage can be found at dougmart.in/projects/pagepipe.
$ npm install -g pagepipe
npm is a builtin CLI when you install Node.js
$ someprocess | pagepipe
This sends the output of someprocess to http://localhost:10371/ (10371 is the default port). Pagepipe will terminate when the output is complete and the first web client consumes the page.
$ someprocess | pagepipe -p 80 -z
This sends the output of someprocess to http://localhost/ (the -p option sets the port). Pagepipe will not terminate (the -z option sets it to zombie mode) and multiple web clients can load the page to see the same output.
$ someprocess | pagepipe -p 80 -z -n 10
This sends the last 10 lines of output of someprocess to http://localhost/ (the -n option sets the number of lines). The 10 lines are held in a buffer and if someprocess emits more lines after a web client connects those lines will also be appended on the page. The -n option is very useful to limit memory usage if you have a source process that generates a lot of output over a long span of time such as tailing a log.
$ secretprocess | pagepipe -p 80 -z -a foo/bar
This sends the output of secretprocess to http://localhost/ and requires the viewer to enter the username of "foo" and password of "bar" to view the contents.
-h, --help output usage information
-V, --version output the version number
-p, --port <n> server port [10371]
-c, --color <#rgb> text color for page [#000]
-b, --bgcolor <#rgb> background color for page [#fff]
-f, --font <name> font face for page [monospace]
-m, --margin <n> margin around output in page [1em]
-t, --title <text> title tag and text for page [pagepipe]
-i, --interface <ip> server interface [localhost]
-a, --auth <username>/<password> require basic auth to view page
-r, --realm <name> realm name for basic auth [pagepipe]
-z, --zombie stays alive after stdin is exhausted
-o, --output pipes to stdout
-n, --numlines <n> size of line buffer, 0 is unlimited [0]
-d, --datestamp prefixes datestamps to all lines
-l, --lines prefixes 1-based line numbers
-j, --json sends event-source data as json
Send a pull request!