{"id":15693476,"url":"https://github.com/juhaku/watchmux","last_synced_at":"2025-05-08T03:58:03.791Z","repository":{"id":94241063,"uuid":"519001970","full_name":"juhaku/watchmux","owner":"juhaku","description":"Multiplexed watch in Rust","archived":false,"fork":false,"pushed_at":"2023-08-13T20:48:29.000Z","size":46,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-08T03:57:58.525Z","etag":null,"topics":["command-line","multiplex","rust","watch"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/juhaku.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","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}},"created_at":"2022-07-28T21:43:54.000Z","updated_at":"2025-04-21T00:26:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"9cc03c21-66b4-46af-a1e0-9d9c493b0a51","html_url":"https://github.com/juhaku/watchmux","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juhaku%2Fwatchmux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juhaku%2Fwatchmux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juhaku%2Fwatchmux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juhaku%2Fwatchmux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/juhaku","download_url":"https://codeload.github.com/juhaku/watchmux/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252996334,"owners_count":21837621,"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":["command-line","multiplex","rust","watch"],"created_at":"2024-10-03T18:44:08.777Z","updated_at":"2025-05-08T03:58:03.749Z","avatar_url":"https://github.com/juhaku.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# watchmux ~ Mux all your watch processes in Rust\n\nWatchmux is a simple async cli tool to mux all your watch processes to single stdout.\n\nWatchmux can run any number of commands or custom shell scripts which will be\nexecuted with bash when type is set to `shell`. Shell scripts and commands can\nbe named with title and they can be provided with additional set of environment\nvariables. Commands and shell scripts are executed in parallel and each output\nwill be multiplexed to single stdout. Currently hard limit for concurrent\nprocesses is 1024. Program will exit when all processes complete or by pressing\n`\u003cC-c\u003e` to terminate program.\n\nhttps://github.com/juhaku/watchmux/assets/26358664/99df340c-b5c6-4b6e-8561-9c5e6a654d4a\n\n## Install\n\nInstall it directly from git with following command.\n```bash\ncargo install --git https://github.com/juhaku/watchmux\n```\n\n## Usage\n\n```bash\nUSAGE:\n    watchmux [OPTIONS]\n\nOPTIONS:\n    -c, --config \u003cFILE\u003e\n            Path to the config file of watchmux\n\n    -h, --help\n            Print help information\n```\n\n## Configuration file syntax (.watchmuxrc.yaml)\n\n```yaml\nprocesses:\n  - title: command title\n    cmd: echo hello world $NAME\n    type: shell\n    env:\n      NAME: Nate\n  - title: cargo\n    cmd: cargo run\n    wait_for: while [[ $status -ne 200 ]]; do $status=0; sleep 1; done\n```\n\n* **title**: text shown left most of the output to distinct where the output is originated.\n* **cmd**: the actual command or shell script to exeucte e.g `cargo run` or with type `shell`\n      this can multiline shell script e.g.\n  ```bash\n  cmd: |\n    while [[ true == true ]]; do\n      echo \"this is true\"\n      sleep 1\n    done\n  ```\n* **type**: `shell` or `cmd` which is default if not provided. `shell` for shell script which \n    are exeucted with bash -c `cmd`. `cmd` is executed as is and is expected to be found from `$PATH`\n* **env**: map of environment variables to provided to `cmd`.\n* **wait_for**: additonal command that need to complete before the `cmd` will be executed.\n\n## Examples\n\nRun wathcmux with `.watchmuxrc.yaml` in current directory:\n```bash\nwatchmux\n```\n\nRun watchmux with custom config file:\n```bash\nwatchmux -c path/to/config\n```\n\nRun watchmux with config from stdin:\n```bash\ncat \u003c\u003cEOF | watchmux -c -\nprocesses:\n  - title: foobar\n    cmd: echo foobar\n    type: shell\nEOF\n```\n\n# License\n\nLicensed under either of [Apache 2.0](LICENSE-APACHE) or [MIT](LICENSE-MIT) license at your option.\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate\nby you, shall be dual licensed, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuhaku%2Fwatchmux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuhaku%2Fwatchmux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuhaku%2Fwatchmux/lists"}