{"id":19418990,"url":"https://github.com/playform/run","last_synced_at":"2025-04-24T13:35:30.540Z","repository":{"id":231856434,"uuid":"782884526","full_name":"PlayForm/Run","owner":"PlayForm","description":"Run 🍺","archived":false,"fork":false,"pushed_at":"2025-04-17T00:54:08.000Z","size":161179,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"Current","last_synced_at":"2025-04-17T13:56:01.782Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://GitHub.Com/PlayForm/Run","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PlayForm.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"custom":"https://Stripe.PlayForm.LTD/b/3csdQZfzn2LDaBOcMN","open_collective":"playform-cloud-collective"}},"created_at":"2024-04-06T10:12:56.000Z","updated_at":"2025-04-17T00:54:11.000Z","dependencies_parsed_at":"2024-05-15T15:44:12.810Z","dependency_job_id":"5c25c30a-c3c7-4d42-89ec-9962de12c131","html_url":"https://github.com/PlayForm/Run","commit_stats":null,"previous_names":["playform/run"],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlayForm%2FRun","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlayForm%2FRun/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlayForm%2FRun/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlayForm%2FRun/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PlayForm","download_url":"https://codeload.github.com/PlayForm/Run/tar.gz/refs/heads/Current","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250636788,"owners_count":21463135,"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":[],"created_at":"2024-11-10T13:15:48.702Z","updated_at":"2025-04-24T13:35:30.497Z","avatar_url":"https://github.com/PlayForm.png","language":"Rust","readme":"# [Run] 🍺\n\n`Run` is a command-line tool that executes commands in multiple directories\nconcurrently.\n\n[Run]: HTTPS://crates.io/crates/prun\n\n## Bench\n\n\u003ctable\u003e\n\t\u003ctr\u003e\n\t\t\u003cth\u003eCommand:\u003c/th\u003e\n\t\t\u003cth\u003eTime:\u003c/th\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003ctd\u003e\n\t\t\t\u003cpre\u003efind -iname .git -execdir ls \\;\u003c/pre\u003e\n\t\t\u003c/td\u003e\n\t\t\u003ctd\u003e\n\t\t\t\u003cpre\u003ereal    0m17.340s\nuser    0m6.214s\nsys     0m9.138s\u003c/pre\u003e\n\t\t\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003ctd\u003e\n\t\t\t\u003cpre\u003eRun -P .git -C 'ls'\u003c/pre\u003e\n\t\t\u003c/td\u003e\n\t\t\u003ctd\u003e\n\t\t\t\u003cpre\u003ereal    0m8.480s\nuser    0m0.046s\nsys     0m0.046s\u003c/pre\u003e\n\t\t\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003ctd\u003e\n\t\t\t\u003cpre\u003efind -iname .git -execdir git status \\;\u003c/pre\u003e\n\t\t\u003c/td\u003e\n\t\t\u003ctd\u003e\n\t\t\t\u003cpre\u003ereal    1m19.070s\nuser    0m5.385s\nsys     0m7.357s\u003c/pre\u003e\n\t\t\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003ctd\u003e\n\t\t\t\u003cpre\u003eRun -P .git -C 'git status'\u003c/pre\u003e\n\t\t\u003c/td\u003e\n\t\t\u003ctd\u003e\n\t\t\t\u003cpre\u003ereal    0m26.170s\nuser    0m0.030s\nsys     0m0.046s\u003c/pre\u003e\n\t\t\u003c/td\u003e\n\t\u003c/tr\u003e\n\u003c/table\u003e\n\n## Installation 🚀\n\n```sh\ncargo install prun\n```\n\n## 🛠️ Usage\n\n`Run` can be used with various options:\n\n```sh\nRun 🍺\n\nUsage: Run [OPTIONS] --Command \u003cCOMMAND\u003e \u003cPATTERN\u003e\n\nArguments:\n  \u003cPATTERN\u003e  Pattern 🔍 [default: .]\n\nOptions:\n  -F, --File               File 📝\n  -P, --Parallel           Parallel ⏩\n  -R, --Root \u003cROOT\u003e        Root 📂 [default: .]\n  -E, --Exclude \u003cEXCLUDE\u003e  Exclude 🚫 [default: \"node_modules .git target dist vendor\"]\n  -C, --Command \u003cCOMMAND\u003e  Command 🖥️\n  -h, --help               Print help\n  -V, --version            Print version\n```\n\n```sh\nRun .git -C 'git fetch upstream'\n```\n\nThis command will fetch from upstream for all `.git` repositories inside the\ncurrent directory. It essentially replaces the following command:\n\n```sh\nfind -iname .git -type d -execdir git fetch upstream \\;\n```\n\n## Options\n\n#### --Command or -C:\n\nThe command to execute:\n\n```sh\nRun .git -C 'git status'\n```\n\nor multiple commands:\n\n```sh\nRun .git -C 'git status' -C 'git add .' -C 'git commit'\n```\n\n#### --File or -F:\n\nLimit execution to files matching a certain pattern:\n\n```sh\nRun -F astro.config.ts -C 'npx astro add @playform/compress'\n```\n\n#### --Root or -R:\n\nSet the current working directory to a different folder (default is `.`):\n\n```sh\nRun -R D:\\Developer .git -C 'git fetch upstream'\n```\n\n#### --Parallel or -P:\n\nRun commands in `parallel` (default is `sequential`):\n\n```sh\nRun -P -R D:\\Developer .git -C 'git fetch upstream'\n```\n\n#### --Exclude:\n\nExclude certain files or directories (defailt is\n`node_modules .git target dist vendor`)\n\n#### --Pattern:\n\nSpecify a custom pattern for matching\n\n## Dependencies\n\n`Run` relies on several Rust crates to provide its functionality:\n\n- [`clap`](https://crates.io/crates/clap) (v4.5.17) - A powerful and flexible\n  command-line argument parser. The \"derive\" feature is used to simplify the\n  creation of command-line interfaces through derive macros.\n\n- [`walkdir`](https://crates.io/crates/walkdir) (v2.5.0) - Provides an efficient\n  and cross-platform way to recursively traverse directories. This is useful for\n  filesystem operations and searching.\n\n- [`futures`](https://crates.io/crates/futures) (v0.3.30) - Offers abstractions\n  for asynchronous programming in Rust. It's used in conjunction with tokio to\n  handle asynchronous operations effectively.\n\n- [`rayon`](https://crates.io/crates/rayon) (v1.10.0) - Enables easy parallelism\n  for data-parallel tasks. It's used to parallelize CPU-bound operations,\n  improving performance on multi-core systems.\n\n- [`tokio`](https://crates.io/crates/tokio) (v1.40.0) - An asynchronous runtime\n  for Rust, providing essential building blocks for writing reliable\n  asynchronous applications. The \"full\" feature set is used to enable all tokio\n  functionality.\n\n- [`num_cpus`](https://crates.io/crates/num_cpus) (v1.16.0) - A small crate that\n  determines the number of CPUs on the current system. This is useful for\n  optimizing parallel workloads.\n\n- [`once_cell`](https://crates.io/crates/once_cell) (v1.19.0) - Provides a way\n  to perform lazy static initialization. It's often used for global variables or\n  singletons that need to be initialized only once.\n\nThese dependencies work together to provide a robust, efficient, and\nuser-friendly command-line tool capable of handling parallel and asynchronous\noperations while efficiently traversing filesystems.\n\n[Run]: HTTPS://crates.io/crates/prun\n\n## Changelog\n\nSee [`CHANGELOG.md`](CHANGELOG.md) for a history of changes to this CLI.\n","funding_links":["https://Stripe.PlayForm.LTD/b/3csdQZfzn2LDaBOcMN","https://opencollective.com/playform-cloud-collective"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplayform%2Frun","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplayform%2Frun","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplayform%2Frun/lists"}