☿ bakethe strangely familiar task runner.
I love using `Makefile` for one-off **tasks** in projects.
The problem with doing this is that you can't use familiar bash–isms when doing so, as **GNU Make** doesn't use the familiar **Bash** syntax, nor does it allow for simple ad–hoc use of abritrary scripting languages (e.g. **Python**).
This project seeks to bridge all of these worlds into a single entrypoint — ideal for cross–language repositories.

----------------
### Features 'n Things
- A `Bakefile`, which looks and feels like the good parts of a `Makefile`.
- Except, you can write real bash code!
- Environment variables are explicitly passed or whitelisted (allowed), not inherinted from the parent shell.
- Unlike `Makefile`, either tabs or 4 spaces can be used.
- Tasks can be run safely and reliably. Rest assured that scripts are executed from the project root (e.g. location of the `Bakefile`).
- See [advanced example](https://github.com/kennethreitz/bake#advanced-usage-sample) for further, juicy, details.
------------------
## Installing `$ bake`
**MacOS**:
```console
$ brew install kennethreitz/-/bake
==> Installing bake from kennethreitz/-
…
🍺 /usr/local/Cellar/bake/19-09-16: 1,563 files, 16.7MB, built in 11 seconds
```
**Various Linux Distributions** (Python 3.6+):
```console
$ pip3 install bake-cli
Collecting bake-cli
…
Successfully installed bake-cli-0.2.0 delegator.py-0.1.1 pexpect-4.7.0 ptyprocess-0.6.0
```
✨🍰✨
---------------
## `$ cat Bakefile`
```make
full-install: system-deps install
install: node-deps python-deps
format:
black .
python-deps:
pipenv install
node-deps:
yarn install
system-deps: @confirm
brew install pipenv
python-example:
#!/usr/bin/env python
import os
import sys
print(os.environ['KEY'])
print(sys.argv[1:])
dangerous-example: @confirm:secure
#
exit 0
```
### `$ bake install`
```console
+ Executing 'node-deps':
yarn install v1.17.3
[1/4] 🔍 Resolving packages...
success Already up-to-date.
✨ Done in 0.03s.
+ Executing 'python-deps':
Installing dependencies from Pipfile.lock (2ee04c)…
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 8/8 — 00:00:01
+ Done.
```
### `$ bake python-example KEY=VALUE 1 2 3`
```console
+ Executing 'python-argv':
VALUE
['1', '2', '3']
+ Done.
```
### `$ bake dangerous-example`
```console
+ Executing '@confirm:secure' ·
What is 10 times 2?: 7
Aborted.
```
## Advanced Usage Sample

Fancy, eh?
---------------------
This repository has been brought to you, with much joy, by Kenneth Reitz.

As above, so below.