Skip to main content

The familar Make / Bash hybrid.

Project description

bake— the 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.

vanity image


$ bake -h
Usage: bake [OPTIONS] [TASK] [ARGUMENTS]...

  bake — the strangely familiar task–runner.

Options:
  -b, --bakefile PATH      The Bakefile to use.
  -l, --list               Lists available tasks.
  --allow TEXT             Whitelist an environment variable for use.
  --yes                    Set medium–security prompts to yes.
  -c, --continue           Continue, if a task fails.
  --insecure               Inherit parent shell's environment variables.
  -s, --silent             Reduce output.
  -e, --environ-json TEXT  Provide environment variables via JSON.
  -j, --json               Output in JSON format (stdout).
  -h, --help               Show this message and exit.

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 for further, juicy, details.

$ cat Bakefile

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
    # <insert deploy to production here>
    exit 0

$ bake install

 + 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

 + Executing 'python-argv':
   VALUE
   ['1', '2', '3']
 + Done.

$ bake dangerous-example

+ Executing '@confirm:secure' ·
   What is 10 times 2?: 7
Aborted.

Advanced Usage Sample

advanced screenshot

Fancy, eh?

Simple Installation of bake (MacOS):

WORK IN PROGRESS

$ brew install kennethreitz/-/bake --HEAD

This repository has been brought to you, with much joy, by Kenneth Reitz.

kr soul icon

As above, so below.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bake-cli-0.2.0.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

bake_cli-0.2.0-py2.py3-none-any.whl (14.6 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file bake-cli-0.2.0.tar.gz.

File metadata

  • Download URL: bake-cli-0.2.0.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.14.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.4

File hashes

Hashes for bake-cli-0.2.0.tar.gz
Algorithm Hash digest
SHA256 07afda751579dd92f586f3ce08771ec9184efc3cabc740bab1220cae7d87588b
MD5 b1f4085c8066645f4711e5051a398a4b
BLAKE2b-256 a4ca0c8d5eb49b4785ecc143684302cb92747803afdf700cc5dffcd8ee96b450

See more details on using hashes here.

Provenance

File details

Details for the file bake_cli-0.2.0-py2.py3-none-any.whl.

File metadata

  • Download URL: bake_cli-0.2.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 14.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.14.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.4

File hashes

Hashes for bake_cli-0.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ebf93ce7947a38228250ce8060388a607346495f89f4131f1a4b806546248e38
MD5 2180217e1f7ab5c1d6f43303a126627c
BLAKE2b-256 60dcbdbcbf7db6ccc4e59db79ff9d22a6d7a7e5ca87f3f00cff060bd08cc3acc

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page