# rtss — Relative TimeStamps for Stuff
`rtss` annotates its output with relative durations between consecutive lines and
since program start.
It can be used as a filter in a pipeline:
```
3.02s 2.76s | Finished release [optimized] target(s) in 3.1 secs
3.02s exit code: 0
```
It can also directly run commands, annotating both stdout and stderr with durations.
stdin is passed through to the child process, and its exit code will become `rtss`'
own exit code:
```
-% rtss sh -c "echo foo; echo bar; sleep 1; echo moo >&2; sleep 1; echo baz; exit 64"
1.07s 1.06s # moo
2.07s 2.07s | baz
2.07s exit code: 64
zsh: exit 64 rtss sh -c
-% rtss sh -c "echo foo; echo bar; sleep 1; echo moo >&2; sleep 1; echo baz; exit 64" 2>/dev/null
2.06s 2.06s | baz
2.06s exit code: 64
zsh: exit 64 rtss sh -c
```
The core of `rtss`; copying one IO to another with timestamps, and pretty-printing
`Durations`, is exposed as a library for use in other programs.
## Installation
If you have Cargo installed you can install the latest release with:
```
cargo install rtss
```
You can also install the latest bleeding-edge version using:
```
cargo install --git https://github.com/Freaky/rtss.git
```
Alternatively you can clone and build manually without installing:
```
git clone https://github.com/Freaky/rtss.git &&
cd rtss &&
cargo build --release &&
target/release/rtss echo It works
```
## Alternatives
`rtss` was inspired by Kevin Burke's [`tss`](https://github.com/kevinburke/tss).
Both are basically trendier versions of `ts` from [moreutils](https://joeyh.name/code/moreutils/).