Metadata-Version: 2.1
Name: dsh
Version: 2.2.0
Summary: console application to organize commands and environments
Home-page: https://github.com/flashashen/dsh2
Author: flashashen
Author-email: flashashen@gmail.com
License: MIT
Keywords: shell console yaml
Platform: osx
Platform: linux
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Software Development
Classifier: Environment :: Console
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX :: Linux
Classifier: Development Status :: 3 - Alpha
Description-Content-Type: text/markdown
License-File: LICENSE.txt

# DSH  - the absent minded developer's shell

![Python versions](https://img.shields.io/pypi/pyversions/dsh.svg)
![MIT License](https://img.shields.io/github/license/flashashen/dsh2.svg)

-------------------------------

Organize the stuff you do via command line

**You might use this if you:**
- Forget how you did that stuff in that project from a while back
- Forget where stuff is
- Want a single, tab-completed view of the stuff you do
- Want to store credentials and stuff outside of project config
- Need to do sutff in separate contexts/environments such as development vs production
- Want a consistent 'api' for doing stuff

## What it does
- At the most basic level, it executes commands expressed in yaml
- Creates a tree of 'contexts' which consist of vars, commands, and subcontexts 
- Locates and merges contexts defined in .dsh.*.yml files
- Provides nested contexts/subshells for projects/environments under a root shell
- Changes current working directory to that of active shell
- Provides variable substitution
- Provides inherited variables with override


## Sample .dsh.yml:

``` yaml
dsh: personal.python.proj

vars:
  app_name: projectX      

test:
  - pytest

install:
  - pip list installed | grep {{app_name}} && pip uninstall -y {{app_name}}
  - pip install -e .

release:
  - tox -r
  - rm -rf build && rm -rf dist
  - python setup.py sdist bdist_wheel
  - twine upload -r pypi -u {{PYPI_USER}} -p {{PYPI_PASS}} dist/{{app_name}}*

```

## Demo
With dsh.yml files similar to the above, a dsh session might look like this:
![usage demo image](https://raw.githubusercontent.com/flashashen/dsh2/master/dsh_quick_demo.svg?raw=true)

## Installation

```
pip install dsh
```



