熟悉的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 |