Metadata-Version: 2.1
Name: bash
Version: 0.6
Summary: Bash for Python
Home-page: https://github.com/alexcouper/bash
Author: Alex Couper
Author-email: info@alexcouper.com
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Topic :: Software Development :: Libraries :: Python Modules

bash for python
===============

A library that enables easy running and concatenation of bash commands in
python

Installation
------------

Install using pip::

    pip install bash


Usage
-----

Run commands as you would in bash::

    >>> from bash import bash
    >>> bash('ls . | grep ".pyc"')
    bash.pyc
    tests.pyc

Chain commands for the same effect::

    >>> bash('ls . ').bash('grep ".pyc"')
    bash.pyc
    tests.pyc

This becomes increasingly useful if you later need to reuse one such command::

    >>> b = bash('ls . ')
    >>> b.bash('grep ".pyc"')
    bash.pyc
    tests.pyc
    >>> b.bash('grep ".py$')
    bash.py
    tests.py

Access stdout and stderr attributes::

    >>> b = bash('ls tests.py')
    >>> b.stdout
    'tests.py\n'
    >>> b.stderr
    ''

Get the return code generated by a command::

    >>> b = bash('ls tests.py')
    >>> b
    tests.py
    >>> b.code
    0


To get a stripped, unicode string version of bash.stdout call value()::

    >>> b = bash('ls tests.py').value()
    u'tests.py'


Motivation
----------

I found that I was often having to write the same lines of code to handle
running bash commands from python.

This provides a pip-installable, tested shortcut to writing::

    from subprocess import PIPE, Popen

    p = Popen(cmd, shell=True, stdout=PIPE, stdin=PIPE, stderr=PIPE)
    output, err = p.communicate()


Warning
-------

Please note that this library uses ``shell=True`` under the hood. This means
that this library is **NOT** suitable for running untrusted commands.
`(See explanation) <https://docs.python.org/2/library/subprocess.html#frequently-used-arguments>`_


Running the tests
-----------------

Simply use a test runner.

    $ nosetests

Support + Contributing
----------------------

Feel free to make pull requests, or report issues via the repo:

https://github.com/alexcouper/bash
