{"id":17928483,"url":"https://github.com/hartwork/rust-for-it","last_synced_at":"2026-02-09T18:03:39.054Z","repository":{"id":172533991,"uuid":"649408659","full_name":"hartwork/rust-for-it","owner":"hartwork","description":":crab: Wait for one or more services (TCP ports) to be available before executing a command; Rust version of wait-for-it","archived":false,"fork":false,"pushed_at":"2026-01-23T16:18:12.000Z","size":426,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-24T07:18:24.223Z","etag":null,"topics":["command-line-tool","rust","rust-application","tcp","wait-for-it"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/hartwork.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":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-06-04T18:46:08.000Z","updated_at":"2026-01-16T20:37:00.000Z","dependencies_parsed_at":"2024-01-05T17:28:41.658Z","dependency_job_id":"f5b97a87-a039-4e5d-b57a-5ff6614db697","html_url":"https://github.com/hartwork/rust-for-it","commit_stats":null,"previous_names":["hartwork/rust-for-it"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/hartwork/rust-for-it","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hartwork%2Frust-for-it","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hartwork%2Frust-for-it/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hartwork%2Frust-for-it/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hartwork%2Frust-for-it/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hartwork","download_url":"https://codeload.github.com/hartwork/rust-for-it/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hartwork%2Frust-for-it/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29274743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-09T17:15:22.002Z","status":"ssl_error","status_checked_at":"2026-02-09T17:14:42.395Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["command-line-tool","rust","rust-application","tcp","wait-for-it"],"created_at":"2024-10-28T21:03:23.798Z","updated_at":"2026-02-09T18:03:39.038Z","avatar_url":"https://github.com/hartwork.png","language":"Rust","readme":"[![Build and test](https://github.com/hartwork/rust-for-it/actions/workflows/build_and_test.yml/badge.svg)](https://github.com/hartwork/rust-for-it/actions/workflows/build_and_test.yml)\n[![Enforce rustfmt-clean code](https://github.com/hartwork/rust-for-it/actions/workflows/enforce_rustfmt.yml/badge.svg)](https://github.com/hartwork/rust-for-it/actions/workflows/enforce_rustfmt.yml)\n\n\n# rust-for-it\n\n## About\n\n**rust-for-it** is a lookalike of\n(the perfectly fine)\nPython [wait-for-it](https://github.com/clarketm/wait-for-it)\nwritten in Rust 1.69+.\n\nIt supports waiting for multiple services concurrently by default,\nand has a test coverage of \u003e90%.\nIf you do find bugs, [please file a report](https://github.com/hartwork/rust-for-it/issues).\nThank you!\n\n\n## Build and run\n\n```console\n$ cargo run -- --help\n```\n\n… or …\n\n```console\n$ cargo build\n$ export PATH=\"${PWD}/target/debug:${PATH}\"\n$ rust-for-it --help\n```\n\n\n## Examples\n\n```console\n$ rust-for-it -t 2 -s [::1]:631 -s localhost:631 -s 127.0.0.1:631 -- echo 'CUPS is very available'\n[*] Waiting 2 seconds for localhost:631...\n[*] Waiting 2 seconds for [::1]:631...\n[+] [::1]:631 is available after 0 seconds.\n[*] Waiting 2 seconds for 127.0.0.1:631...\n[+] 127.0.0.1:631 is available after 0 seconds.\n[+] localhost:631 is available after 0 seconds.\nCUPS is very available\n```\n\n\n## Usage\n\n```console\n$ rust-for-it --help\nWait for one or more services to be available before executing a command.\n\nUsage: rust-for-it [OPTIONS] [command]...\n\nArguments:\n  [command]...  Command to run after waiting;\n                includes command arguments, resolved against ${PATH}\n\nOptions:\n  -q, --quiet                     Do not output any status messages\n  -S, --strict                    Only execute \u003ccommand\u003e if all services are found available [default: always executes]\n  -t, --timeout \u003cseconds\u003e         Timeout in seconds, 0 for no timeout [default: 15]\n  -s, --service [\u003chost:port\u003e...]  Service to test via the TCP protocol; can be passed multiple times\n  -h, --help                      Print help\n  -V, --version                   Print version\n```\n\n\n## Alternatives\n\n### Go\n\n- [`github.com/alioygur/wait-for`](https://github.com/alioygur/wait-for)\n- [`github.com/hartwork/go-wait-for-it`](https://github.com/hartwork/go-wait-for-it)\n- [`github.com/maxcnunes/waitforit`](https://github.com/maxcnunes/waitforit)\n- [`github.com/mjeri/go-wait-for-it`](https://github.com/mjeri/go-wait-for-it)\n\n\n### Python\n\n- [`github.com/clarketm/wait-for-it`](https://github.com/clarketm/wait-for-it)\n  — package `wait-for-it` [on PyPI](https://pypi.org/project/wait-for-it/)\n- [`github.com/David-Lor/python-wait4it`](https://github.com/David-Lor/python-wait4it/)\n  — package `wait4it` [on PyPI](https://pypi.org/project/wait4it/)\n\n\n### Rust\n\n- [`github.com/Etenil/wait-for-rust`](https://github.com/Etenil/wait-for-rust)\n- [`github.com/hartwork/rust-for-it`](https://github.com/hartwork/rust-for-it) — the one you are looking at\n- [`github.com/ktitaro/wait-for`](https://github.com/ktitaro/wait-for)\n  — package `wait_for` [on crates.io](https://crates.io/crates/wait_for)\n- [`github.com/magiclen/wait-service`](https://github.com/magiclen/wait-service)\n  — package `wait-service` on [crates.io](https://crates.io/crates/wait-service)\n- [`github.com/shenek/wait-for-them`](https://github.com/shenek/wait-for-them)\n  — package `wait-for-them` [on crates.io](https://crates.io/crates/wait-for-them)\n\n\n### Shell\n\n- [`github.com/eficode/wait-for`](https://github.com/eficode/wait-for)\n  — POSIX shell\n- [`github.com/vishnubob/wait-for-it`](https://github.com/vishnubob/wait-for-it)\n  — Bash, package `wait-for-it` [in Debian](https://packages.debian.org/unstable/wait-for-it)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhartwork%2Frust-for-it","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhartwork%2Frust-for-it","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhartwork%2Frust-for-it/lists"}