Package: bake-cli
$bake— a s☿rangely familiar workflow utlity.~ under development ~$cat Bakefile$bake installinstall: install/node install/python                            +Executing install/node:
    echo 'All ready!'                                           |  yarn install v1.17.3install/full: install/system install                            |  info No lockfile found.install/python: @skip:key=Pipfile.lock                          |  [1/4] Resolving packages...
    pipenv install                                              |  [2/4] Fetching packages...install/node: @skip:key=yarn.lock                               |  [3/4] Linking dependencies...
    yarn install                                                |  [4/4] Building fresh packages...install/system: @confirm                                        |  success Saved lockfile.
    brew install pipenv yarn                                    |  Done in 0.05s.
                                                                +Executing install/python:python/format:                                                  |  Installing dependencies from …
    black .                                                     +Executing install:
                                                                |  All ready!utils/argv:                                                     +Done.
    set -u && echo "$HELLO: $@"                                 
                                                                Rinse and repeat…utils/deploy: @confirm:secure                 
    exit 0~seebake's ownBakefile~What's in the oven?ABakefile, whichlooksandfeelslike the good parts of aMakefile.Except, you can write realbashcode!      Any and all syntax is accepted — no magic going on here. ;)UnlikeMakefile, you may utilize[4 ×U+0020a.k.a.“spaces”]for indentation.Environment variables are explicitly passed or whitelisted (--allow), not inherited from the parent shell.Tasks can be run safely and reliably. Rest assured that scripts are executed from the project root directory.There are many other benefits to this design, that have yet to be expressed in this document.Automate Workflows — Bootstrap Development Environments — Commit The TasksI love usingMakefilefor one-offtasksin projects.The problem with doing this is that you can't use familiar bash–isms when doing so, asGNU Makedoesn't use the familiarBashsyntax, nor does it allow for simple ad–hoc use of arbitrary scripting languages (e.g.Python).project seeks to bridge all of these worlds into a single entrypoint — ideal for cross–language repositoriesBootstrapingbake—                                          (for local development workflows)Various*nix Distributions(Python 3.6+):The primary installation method ofbake, today, is viapip:$pip3installbake-cliCollecting bake-cli…Successfully installed bake-cli-0.2.0 delegator.py-0.1.1 pexpect-4.7.0 ptyprocess-0.6.0This will always work, but it will not be the default recommendation.MacOS (Previously known as OS X)Installation ofbakewill (soon) be very easy, with Homebrew. The formula needs a subtle adjustment — if you want to help,here's the repo!$brewinstallkennethreitz/-/bake==> Installing bake from kennethreitz/-…🍺  /usr/local/Cellar/bake/19-09-16: 1,563 files, 16.7MB, built in 11 secondsHomebrew will be the primary installation target ofbake.✨🍰✨Bootstrapingbake—                                             (for production workflows)Containers!e.g.Docker.You an also runbakevia Docker! An official image has been made availableon DockerHub:$dockerrunkennethreitz/bakeWedSep1810:11:012019No Bakefile found!Usage:  [OPTIONS] [TASK] [ARGUMENTS]...$bake—thestrangelyfamiliartask–runner.Options:-b, --bakefile PATH      The Bakefile to use.-l, --list               Lists available tasks (and their dependencies).-h, --help               Show this message and exit.--allow TEXT             Whitelist an environment variable for use.--no-deps                Do not run dependent tasks.--yes                    Set medium–security prompts to yes.--continue               Continue, if a task fails.-i, --interactive        Run in interactive mode.--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).Bakefileis expected to live at/app/Bakefile.If you inherit from this image,ONBUILDdirectives will automatically copy your application code (build context) into the container, into/app.Bonus Points: this image is alsoavailable on the GitHub Package Registry(beta).Team & Workflow ManagementYou can usebaketo bootstrap your team's development environments, ensuring a smooth and optimal workflow & local development experience.Here's an example, using theBakefileprovided above:$bakeinstall+ Executing install/node:|  yarn install v1.17.3|  info No lockfile found.|  [1/4] Resolving packages...|  [2/4] Fetching packages...|  [3/4] Linking dependencies...|  [4/4] Building fresh packages...|  success Saved lockfile.|  Done in 0.05s.+ Executing install/python:|  Installing dependencies from Pipfile.lock (f10bb0)…+ Executing install:+ Done.Skip Steps, AutomaticallyBecause we configuredyarn.lockandPipfile.lockas cache keys,
bake will automatically skip the configured steps— only running them
when the files are changed!So, let's run that command again :)$bakeinstall+ Skipping install/node:+ Skipping install/python.+ Executing install:+ Done.Neat, eh?Arguments & Parameters: Passing Values In$bakeutils/argvKEY=VALUES123+ Executing utils/argv:|  VALUES: 1 2 3+ Done.(Optional) Non-Deterministic Confirmation Dialouges$bakeutils/deployWhat is 10 times 2?: 7Aborted.Community / ContribVisual Studio Code Extension— highlightsBakefile— adequately.This open source software has been designed, foryou, with much joy, by the hands of:☿