熟悉的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
烤箱里有什么?
- 一个
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.lock
和 Pipfile.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.
社区 / 贡献
- Visual Studio Code 扩展 — 适当突出显示
Bakefile
。
这款开源软件是由 你 的双手,带着极大的喜悦设计和制作的。
☿
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
bake-cli-0.12.0.tar.gz (21.7 kB 查看哈希)
构建分布
bake_cli-0.12.0-py2.py3-none-any.whl (21.9 kB 查看哈希)
关闭
bake-cli-0.12.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 64dc6be1b514030c4e673eac3e8719f9b2398005cbe4199e7d7d909206d17d79 |
|
MD5 | 605ddadc1e018676cf5e4a45221f9a9e |
|
BLAKE2b-256 | e19eb35adaae7e19e78d552ebdaea5f2df7fa93b0044e71a6d42278c9f7e21da |
关闭
bake_cli-0.12.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d6a0133563f3c224b6fe17d883215bf5aa5ef800e910f2795ed8303cb45020f2 |
|
MD5 | 022e1d9ee1310455862964a7f5b879e5 |
|
BLAKE2b-256 | bf372046ef469fa1319c91c269810a7bb2c75c5191b0b009d0474efda72693b7 |