Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rednafi/rush
🏃♀️ Minimalistic CLI Tool for Managing and Running Bash Snippets
https://github.com/rednafi/rush
automation bash fish python shell task task-list task-management task-runner zsh
Last synced: about 1 month ago
JSON representation
🏃♀️ Minimalistic CLI Tool for Managing and Running Bash Snippets
- Host: GitHub
- URL: https://github.com/rednafi/rush
- Owner: rednafi
- License: mit
- Archived: true
- Created: 2019-11-24T20:00:54.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2020-04-26T07:35:48.000Z (over 4 years ago)
- Last Synced: 2024-10-29T02:04:30.238Z (about 1 month ago)
- Topics: automation, bash, fish, python, shell, task, task-list, task-management, task-runner, zsh
- Language: Python
- Homepage:
- Size: 1.15 MB
- Stars: 37
- Watchers: 3
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-starred - rednafi/rush - 🏃♀️ Minimalistic CLI Tool for Managing and Running Bash Snippets (shell)
README
# Rush 🏃
**♆ Rush: A Minimalistic Bash Utility**![img](./img/rush-run.png)
**Run all your task automation **Bash commands** from a single `rushfile.yml` file.**
## Features
* Supports all **bash** commands
* Option to ignore or run specific tasks
* By default, runs commands in **interactive** mode
* Option to catch or ignore **command errors**
* Option to show or supress **command outputs**
* **Command chaining is supported** (See the example `rushfile.yml` where `task_2` is chained to `task_1`)## Installation
```
$ pip3 install rush-cli
```## Workflow
### Rushfile
Here is an example `rushfile.yml`. It needs to reside in the root directory:``` yml
# rushfile.ymltask_1: |
echo "task1 is running"task_2: |
# Task chaining [task_1 is a dependency of task_2]
task_1
echo "task2 is running"task_3: |
ls -a
sudo apt-get install cowsay | head -n 0
cowsay "Around the world in 80 days!"//task_4: |
# Ignoring a task [task_4 will be ignored while execution]
ls | grep "ce"
ls > he.txt1task_5: |
# Running a bash script from rush
./script.sh
```### Available Options
To see all the available options, run:
```
$ rush
```
or,
```
$ rush --help
```
This should show:```
Usage: rush [OPTIONS] [FILTER_NAMES]...♆ Rush: A Minimalistic Bash Utility
Options:
-a, --all Run all tasks
--hide-outputs Option to hide interactive output
--ignore-errors Option to ignore errors
-p, --path Show the absolute path of rushfile.yml
--no-deps Do not run dependent tasks
--view-tasks View task commands
-ls, --list-tasks List task commands with dependencies
--no-warns Do not show warnings
-v, --version Show rush version
-h, --help Show this message and exit.
```### Running Tasks
* **Run all the tasks**
```
$ rush --all
```* **Run specific tasks**
```
$ rush task_1 task_4
```
* **Ignore specific tasks**See the example `rushfile.yml` where the `'//'` before a task name means that the task will be ignored during execution
```
# rushfile.yml//task_4: |
echo "This task will be ignored during execution."
```
This ignores the task named `//task_4`.* **Run tasks non interactively** (supress the outputs)
```
$ rush --hide-outputs
```* **Run tasks ignoring errors**
```
$ rush --ignore-errors
```* **Do not run the dependent tasks**
```
$ rush task_2 --no-deps
```### Viewing Tasks
* **View absolute path of rushfile.yml**
```
$ rush --path
```
output,
```
/home/rednafi/code/rush/rushfile.yml
```* **View task commands**
```
$ rush task_5 task_6 task_7 --view-tasks
```
![img](./img/rush-view.png)* **View task list with dependencies**
```
$ rush -ls
```## Quirks
* Rush runs all the commands using `/usr/bin/bash`. So shell specific syntax with other shebangs might throw error.
* If you are running Bash script from rush, use shebang (`#!/usr/bin/env bash`)
## Issues
* Rush works better with python 3.7 and up
* 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`:```
export LC_ALL=C.UTF-8
export LANG=C.UTF-8
```
You 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)