跳转到主要内容

熟悉的Make / Bash混合体。

项目描述

$ bake — 一个奇妙的熟悉的工作流程实用工具。

~ under development ~  

$ cat Bakefile $ bake install install: install/node install/python + Executing install/node: echo 'All ready!' | yarn install v1.17.3 install/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

~ 查看bake自己的Bakefile ~

烤箱里有什么?

  • 一个Bakefile,它看起来和感觉就像Makefile的良好部分。
  • 但是,您可以编写真正的bash代码!任何语法都接受——这里没有魔法。 ;)
  • Makefile不同,您可以使用     [ 4 × U+0020 “空格”]进行缩进。
  • 环境变量将显式传递或列入白名单(--allow),而不是从父shell继承。
  • 任务可以安全可靠地运行。请放心,脚本是在项目根目录下执行的。
  • 此设计还有许多其他好处,尚未在本文档中表达。

自动化工作流程 — 引导开发环境 — 提交任务

我喜欢在项目中使用Makefile进行一次性任务。

这样做的问题是不能使用熟悉的bash语法,因为GNU Make不使用熟悉的Bash语法,也不允许简单随意地使用任意脚本语言(例如Python)。

项目旨在将所有这些世界融合到一个入口点——适用于跨语言存储库。


初始化 bake —                                          (用于本地开发工作流程)

各种 *nix 发行版(Python 3.6+)

目前,bake 的主要安装方法是使用 pip

$ 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

这总是可行的,但不是默认推荐。

MacOS(以前称为 OS X)

使用 Homebrew 安装 bake 将会(很快)变得非常简单。需要微调公式 — 如果你想帮忙,这里有仓库

$ brew install kennethreitz/-/bake
==> Installing bake from kennethreitz/-

🍺  /usr/local/Cellar/bake/19-09-16: 1,563 files, 16.7MB, built in 11 seconds

Homebrew 将成为 bake 的主要安装目标。

✨🍰✨

初始化 bake —                                             (用于生产工作流程)

容器!例如 Docker。

您还可以通过 Docker 运行 bake!官方镜像已在 DockerHub 上提供

$ docker run kennethreitz/bake                                                                                                                                                                       Wed Sep 18 10:11:01 2019
No Bakefile found!
Usage:  [OPTIONS] [TASK] [ARGUMENTS]...

 $ bake  the strangely familiar task–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).
  • Bakefile 应位于 /app/Bakefile
  • 如果您继承此镜像,ONBUILD 指令将自动将您的应用程序代码(构建上下文)复制到容器中的 /app

加分项:此镜像也可在 GitHub 软件包注册处获得(beta)


团队 & 工作流程管理

您可以使用 bake 来初始化您团队的开发环境,确保工作流程和本地开发体验顺畅且优化。

以下是一个使用上面提供的 Bakefile 的示例

$ bake install
 + 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.

跳过步骤,自动执行

因为我们已将 yarn.lockPipfile.lock 配置为缓存键,所以 bake 将自动跳过配置的步骤 — 只在文件更改时才运行它们!

那么,我们再次运行那个命令 :)

$ bake install
 + Skipping install/node:
 + Skipping install/python.
 + Executing install:
 + Done.

不错,对吧?

参数 & 参数:传递值

$ bake utils/argv KEY=VALUES 1 2 3
 + Executing utils/argv:
 |  VALUES: 1 2 3
 + Done.

(可选)非确定性的确认对话框

$ bake utils/deploy
   What is 10 times 2?: 7
Aborted.

社区 / 贡献


 

这款开源软件是由 的双手,带着极大的喜悦设计和制作的。

 

 

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

bake-cli-0.12.0.tar.gz (21.7 kB 查看哈希)

上传时间

构建分布

bake_cli-0.12.0-py2.py3-none-any.whl (21.9 kB 查看哈希)

上传时间 Python 2 Python 3

支持