nix_shell_utils
simple shell-like commands for Python
nix_shell_utils is a collection of Python function wrappers around commonly
used shell commands. The idea is to move all the small shell scripts heavily
using cp, mkdir, rm and shell globbing that tend to be used for automation
into one’s Python codebase.
Dependencies
Python version required: 3.7+
If documentation is to be generated
sphinxandsphinx_rtd_themepackages are required:
pip install sphinx sphinx_rtd_theme
Installation
Simply type:
pip install svtmp
Documentation
Documentation can be found @ readthedocs
Examples
cp, cd, mkdir: the following python
from unix_shell_utils import *
dest = '$PRJ_HOME/sv/src'
src = '$PRJ_HOME/gen/sv/out'
mkdir(dest) # make destination folder
with cd(src): # change to src directory - returns automatically to current folder
cp('*.sv',dest) # copy all .sv files in src to dest folder
is equivalent to this shell code:
dest=$PRJ_HOME/sv/src
src=$PRJ_HOME/gen/sv/out
mkdir -p $dest
curdir=$PWD
cd $src
cp *.sv $dest
cd $curdir
removing files: the following code
with cd('$PRJ_HOME/logs/'):
rm('*.log')
is equivalent to the following shell commands:
curdir=$PWD
cd $PRJ_HOME/logs
rm -rf *.log
cd $curdir
temporary environment: the code under the
tmpenvcontext manager
with tmpenv('HOME', FOO='BAR'):
print(os.environ['FOO'] # ==> 'BAR'
...
will modify temporarily the os.environ in place so that HOME env variable is
deleted, and a new environment variable FOO is added. Upon leaving the with block,
os.environ is returned to its prior state.
Development
clone this repository (or download a zip and unzip it somewhere)
git clone https://github.com/alb-garcia/nix_shell_utils.git
inside the cloned folder, make a editable installation
pip install -e .
To run tests (pytest needs to be installed):
cd test; pytest -vvv
Documentation Generation
To generate the documentation (assuming the clone repository lives @ $NIX_SHELL_UTILS_DIR:
cd $NIX_SHELL_UTILS_DIR/docs
make html
the documentation can be then accessed @ $NIX_SHELL_UTILS_DIR/docs/_build/html/index.htm
Package Documentation
Contents: