{"id":13582338,"url":"https://github.com/kevinburke/tss","last_synced_at":"2025-04-23T23:47:47.456Z","repository":{"id":66238472,"uuid":"130606181","full_name":"kevinburke/tss","owner":"kevinburke","description":"Go port of moreutils/ts","archived":false,"fork":false,"pushed_at":"2025-01-21T21:24:20.000Z","size":43,"stargazers_count":51,"open_issues_count":2,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-30T04:51:10.241Z","etag":null,"topics":["golang","moreutils","profiling","timing","ts"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kevinburke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-22T20:46:00.000Z","updated_at":"2025-01-22T08:03:49.000Z","dependencies_parsed_at":"2025-03-06T21:42:59.706Z","dependency_job_id":null,"html_url":"https://github.com/kevinburke/tss","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinburke%2Ftss","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinburke%2Ftss/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinburke%2Ftss/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinburke%2Ftss/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kevinburke","download_url":"https://codeload.github.com/kevinburke/tss/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250535098,"owners_count":21446505,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","moreutils","profiling","timing","ts"],"created_at":"2024-08-01T15:02:36.864Z","updated_at":"2025-04-23T23:47:47.434Z","avatar_url":"https://github.com/kevinburke.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# tss (1)\n\n`tss` is like `ts` from moreutils, but prints relative durations (with\nmillisecond precision) by default, and can be shipped as a compiled binary.\n\nTry it out:\n\n```\n$ (sleep 1; echo \"hello\"; sleep 2; echo \"two sec\") | tss\n   995ms          hello\n      3s   2.005s two sec\n```\n\nThe first column is the amount of time that has elapsed since the program\nstarted. The second column is the amount of time that has elapsed since the last\nline printed.\n\n## Installation\n\n[Find your target operating system](https://github.com/kevinburke/tss/releases) (darwin, windows, linux) and desired bin\ndirectory, and modify the command below as appropriate:\n\n    curl --silent --location --output /usr/local/bin/tss https://github.com/kevinburke/tss/releases/download/0.4/tss-linux-amd64 \u0026\u0026 chmod 755 /usr/local/bin/tss\n\nThe latest version is 0.4.\n\nIf you have a Go development environment, you can also install via source code:\n\n    go get -u github.com/kevinburke/tss\n\nThe corresponding library is available at\n`github.com/kevinburke/tss/lib`. View the library documentation at\n[godoc.org](https://godoc.org/github.com/kevinburke/tss/lib).\n\n## Usage Notes\n\n- Piping commands to `tss` may result in programs buffering their output before\nflushing it to stdout file descriptor. You can avoid this by wrapping the target\nprogram in a command like `unbuffer` (via [the expect package][expect]) or\n[`stdbuf` from the coreutils package][stdbuf]. On Macs you can install with\n`brew install expect` and `brew install coreutils` respectively; the stdbuf\ncommand may be prefixed with a 'g': `gstdbuf`.\n\n    ```\n    stdbuf --output=L \u003cmycommand\u003e | tss\n    ```\n\n- Piping commands may also change the return code from non-zero to zero, since\nBash by default uses the return code of the last command in the pipe to decide\nhow to exit. This means if you are piping output to `tss` or `ts` you may\naccidentally change a failing program to a passing one. Use `set -o pipefail` in\nBash scripts to ensure that Bash will return a non-zero return code if any part\nof a pipe operation fails. Or add this to a Makefile:\n\n    ```\n    SHELL = /bin/bash -o pipefail\n    ```\n\n\n[expect]: http://expect.sourceforge.net/example/unbuffer.man.html\n[stdbuf]: https://www.gnu.org/software/coreutils/manual/html_node/stdbuf-invocation.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkevinburke%2Ftss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkevinburke%2Ftss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkevinburke%2Ftss/lists"}