Skip to main content

♆ Rush: A Minimalistic Bash Utility

Project description

Rush 🏃

♆ Rush: A Minimalistic Bash Utility

img

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:

# 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

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

  • 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rush-cli-0.6.1.tar.gz (9.2 kB view hashes)

Uploaded Source

Built Distribution

rush_cli-0.6.1-py3-none-any.whl (9.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page