β Rush: A Minimalistic Bash Utility
Run all your task automation Bash commands from a single rushfile.yml
file.
- 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
wheretask_2
is chained totask_1
)
$ pip3 install rush-cli
Here is an example rushfile.yml
. It needs to reside in the root directory:
# rushfile.yml
task_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.txt1
task_5: |
# Running a bash script from rush
./script.sh
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.
-
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
-
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
-
View task list with dependencies
$ rush -ls
-
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
)
- 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.