{"id":13557322,"url":"https://github.com/rednafi/rush","last_synced_at":"2025-04-03T11:31:47.789Z","repository":{"id":57463263,"uuid":"223802107","full_name":"rednafi/rush","owner":"rednafi","description":"🏃‍♀️ Minimalistic CLI Tool for Managing and Running Bash Snippets","archived":true,"fork":false,"pushed_at":"2020-04-26T07:35:48.000Z","size":1211,"stargazers_count":37,"open_issues_count":3,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T07:26:10.415Z","etag":null,"topics":["automation","bash","fish","python","shell","task","task-list","task-management","task-runner","zsh"],"latest_commit_sha":null,"homepage":"","language":"Python","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/rednafi.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}},"created_at":"2019-11-24T20:00:54.000Z","updated_at":"2023-05-12T16:56:56.000Z","dependencies_parsed_at":"2022-09-13T03:11:11.379Z","dependency_job_id":null,"html_url":"https://github.com/rednafi/rush","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rednafi%2Frush","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rednafi%2Frush/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rednafi%2Frush/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rednafi%2Frush/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rednafi","download_url":"https://codeload.github.com/rednafi/rush/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246993093,"owners_count":20865934,"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":["automation","bash","fish","python","shell","task","task-list","task-management","task-runner","zsh"],"created_at":"2024-08-01T12:04:16.733Z","updated_at":"2025-04-03T11:31:42.773Z","avatar_url":"https://github.com/rednafi.png","language":"Python","readme":"\u003cdiv align=\"center\"\u003e\n\n# Rush 🏃\n**♆ Rush: A Minimalistic Bash Utility**\n\n\n![img](./img/rush-run.png)\n\n**Run all your task automation **Bash commands** from a single `rushfile.yml` file.**\n\u003c/div\u003e\n\n\n## Features\n* Supports all **bash** commands\n* Option to ignore or run specific tasks\n* By default, runs commands in **interactive** mode\n* Option to catch or ignore **command errors**\n* Option to show or supress **command outputs**\n* **Command chaining is supported** (See the example `rushfile.yml` where `task_2` is chained to `task_1`)\n\n## Installation\n\n```\n$ pip3 install rush-cli\n```\n\n## Workflow\n\n### Rushfile\nHere is an example `rushfile.yml`. It needs to reside in the root directory:\n\n``` yml\n# rushfile.yml\n\ntask_1: |\n    echo \"task1 is running\"\n\ntask_2: |\n    # Task chaining [task_1 is a dependency of task_2]\n    task_1\n    echo \"task2 is running\"\n\ntask_3: |\n    ls -a\n    sudo apt-get install cowsay | head -n 0\n    cowsay \"Around the world in 80 days!\"\n\n//task_4: |\n    # Ignoring a task [task_4 will be ignored while execution]\n    ls | grep \"ce\"\n    ls \u003e he.txt1\n\ntask_5: |\n    # Running a bash script from rush\n    ./script.sh\n```\n\n### Available Options\nTo see all the available options, run:\n```\n$ rush\n```\nor,\n```\n$ rush --help\n```\nThis should show:\n\n```\nUsage: rush [OPTIONS] [FILTER_NAMES]...\n\n  ♆ Rush: A Minimalistic Bash Utility\n\nOptions:\n  -a, --all          Run all tasks\n  --hide-outputs     Option to hide interactive output\n  --ignore-errors    Option to ignore errors\n  -p, --path         Show the absolute path of rushfile.yml\n  --no-deps          Do not run dependent tasks\n  --view-tasks       View task commands\n  -ls, --list-tasks  List task commands with dependencies\n  --no-warns         Do not show warnings\n  -v, --version      Show rush version\n  -h, --help         Show this message and exit.\n```\n\n### Running Tasks\n\n* **Run all the tasks**\n    ```\n    $ rush --all\n    ```\n\n* **Run specific tasks**\n    ```\n    $ rush task_1 task_4\n    ```\n* **Ignore specific tasks**\n\n    See the example `rushfile.yml` where the `'//'` before a task name means that the task will be ignored during execution\n\n    ```\n    # rushfile.yml\n\n    //task_4: |\n        echo \"This task will be ignored during execution.\"\n    ```\n    This ignores the task named `//task_4`.\n\n* **Run tasks non interactively** (supress the outputs)\n    ```\n    $ rush --hide-outputs\n    ```\n\n* **Run tasks ignoring errors**\n    ```\n    $ rush --ignore-errors\n    ```\n\n* **Do not run the dependent tasks**\n    ```\n    $ rush task_2 --no-deps\n    ```\n\n### Viewing Tasks\n\n* **View absolute path of rushfile.yml**\n    ```\n    $ rush --path\n    ```\n    output,\n    ```\n    /home/rednafi/code/rush/rushfile.yml\n    ```\n\n* **View task commands**\n    ```\n    $ rush task_5 task_6 task_7 --view-tasks\n    ```\n    ![img](./img/rush-view.png)\n\n* **View task list with dependencies**\n    ```\n    $ rush -ls\n    ```\n\n## Quirks\n\n* Rush runs all the commands using `/usr/bin/bash`. So shell specific syntax with other shebangs might throw error.\n\n* If you are running Bash script from rush, use shebang (`#!/usr/bin/env bash`)\n\n\n## Issues\n* Rush works better with python 3.7 and up\n* If your have installed `Rush` globally and it throws a runtime error, you can try to solve it via adding the following variables to your `~./bashrc`:\n\n```\nexport LC_ALL=C.UTF-8\nexport LANG=C.UTF-8\n```\nYou can find more information about the issue and why it's a non-trivial problem [here.](http://click.palletsprojects.com/en/7.x/python3/#python-3-surrogate-handling)\n","funding_links":[],"categories":["Python","bash"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frednafi%2Frush","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frednafi%2Frush","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frednafi%2Frush/lists"}