Shellfuncs Save

Python API to execute shell functions as they would be Python functions

Project README

shellfuncs

Build Status PyPI package version PyPI python versions

Python API to execute functions written in shell script.

Let's assume you have a shell script counters.sh like this:

count_python_imports() {
    find -name '*.py' | xargs grep -e '^import os$' -e '^import sys$' -e '^import re$' | cut -d: -f2 | sort | uniq -c
}

And you want to execute the count_python_imports function within Python. Instead of using cumbersome subprocess wouldn't it be awesome to do something like this:

import shellfuncs

from counters import count_python_imports

returncode, stdout, stderr = count_python_imports()

Yeah, yeah, I know about easier ways of achieving the above, too. Thanks.

Why should I use that?

  • use existing shell scripts in a pythonic way
  • complex piping stuff might be easier to implement in shell script
  • testing shell scripts is a pain in the a** - with Python it'll be easier

Installation

The recommended way to install shellfuncs is to use pip:

pip install shellfuncs

Usage

shellfuncs can be configured on different levels.

The following configuration variables are available:

  • shell (defaults to /bin/sh)
  • env (defaults to os.environ)

Configuration via environment variables

Set the default shell via SHELLFUNCS_DEFAULT_SHELL environment variable:

export SHELLFUNCS_DEFAULT_SHELL=/bin/bash

Configuration via context manager

Set the configuration block-wise with a context manager:

import shellfuncs

with shellfuncs.config(shell='/bin/bash'):
    from counters import count_python_imports

count_python_imports()  # the shell used will be /bin/bash

Configuration for specific function call

Set the configuration when function is executed:

import shellfuncs

from counters import count_python_imports

count_python_imports(shell='/bin/bash')

This project is published under MIT.
A Timo Furrer project.
- :tada: -

Open Source Agenda is not affiliated with "Shellfuncs" Project. README Source: timofurrer/shellfuncs
Stars
101
Open Issues
1
Last Commit
11 months ago
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating