12 个版本 (6 个重大变更)

0.7.1 2024 年 2 月 19 日
0.7.0 2023 年 10 月 13 日
0.6.1 2022 年 9 月 7 日
0.6.0 2022 年 7 月 20 日
0.4.0 2021 年 11 月 13 日

#105 in 模板引擎

Download history 3/week @ 2024-03-09 1/week @ 2024-03-16 9/week @ 2024-03-30

每月 61 次下载

MIT 许可证

340KB
1.5K SLoC

petridish

CI Version info GitHub
创建项目结构的命令行工具。

如果你听说过 cookiecutter 项目,petridish 是它的 Rust 实现。

功能

功能 描述
跨平台 Windows、Linux、MacOS
更灵活的配置 petridish 使用 toml 文件定义模板变量
更人性化的提示 支持不同类型的提示(inputselectmulti selectconfirm
强大的模板引擎 我们使用 tera 作为我们的模板引擎,它是基于 Jinja2/Django 的
一个二进制文件 一个二进制文件在任何地方运行
管理缓存模板 如果你下载了一个远程模板,它将被缓存,因此以后你可以直接使用其名称而不必再次下载。你还可以 listremove 这些缓存模板

用法

类似于 cookiecutter,你应该提供如下目录结构

让我们看看 petridish.toml 文件

[petridish]
project_prompt = "project name?"
project_var_name = "project_name"
short_description = "This is an awesome template"

[[prompts]]
name = "name"
prompt = "what's your name"
type = "string"

[[prompts]]
name = "age"
choices = [10, 20, 30]
default = 20
type = "number"

[[prompts]]
name = "hobby"
choices = ["running", "swimming"]
multi = true
type = "string"

[[prompts]]
name = "is_geek"
type = "bool"
default = true

Petridish 配置

字段 描述 可选
project_prompt 用于 project_var_name 的提示信息,默认为 project name?
project_var_name 项目变量名称,默认为 project_name
short_description 模板的简短描述,将在子命令 list 中显示
long_description 模板的详细描述,将在第一次提示之前显示(支持 Markdown 高亮

提示配置

提示类型 字段 描述 可选
字符串输入 name 模板变量名称
提示 提示信息
默认 默认为空,支持模板渲染
正则表达式 正则表达式模式,提示值必须匹配该模式
类型 必须是 string
数字输入 name 模板变量名称
提示 提示信息
默认 默认为0
最小值 最小值
最大值 最大值
类型 必须是 number
选择 name 模板变量名称
提示 提示信息
选项 选项项
默认 默认值
类型 stringnumber
多选 name 模板变量名称
提示 提示信息
选项 选项项
默认 默认值
多选 必须是 true
可空 是否可以为空值,默认 false
类型 stringnumber
确认 name 模板变量名称
提示 提示信息
默认 默认值(默认 false
类型 必须是 bool

远程git缩写

petridish 知道Github(gh)和GitLab(gl)项目的缩写

格式应该是这样的 <abbreviation>[+<protocol>]:<namespace>/<project>

protocol 可以是:https, http, ssh,(默认是 https)

$ petridish new gh+https:petridish-dev/example
$ petridish new example # later you can just use its name

如果远程http(s)项目是私有的,petridish 将提示输入 usernamepassword 进行授权。

示例

模板

Tera 模板只是一个文本文件,在渲染时变量和表达式会被值替换。语法基于 Jinja2 和 Django 模板。

有 3 种分隔符,且不能更改

  • {{ 和 }} 用于表达式
  • {% 和 %} 用于语句
  • {# 和 #} 用于注释

更多语法细节可以在 tera 中找到。

依赖

~23–40MB
~688K SLoC