3 个版本

0.2.6 2024 年 5 月 13 日
0.2.5 2024 年 5 月 10 日

608开发工具

自定义授权LGPL-3.0

29KB
503 行代码(不包括注释)

TL;DR

pbj 是一个命令行工具,用于从用 TOML 编写的声明性模板生成合理的 tdd 软件开发项目。

TypescriptPython 项目模板已内置。只需 安装 即可。

pbj 生成-t python项目名称

pbj 生成-t typescript项目名称

有关自定义和该工具存在原因的详细信息,请参阅 模板 部分。

安装

pbj 可在 https://crates.io 上找到。源代码可在其 GitHub 页面上找到:https://github.com/electric-hand/pbj

最简单的安装方法是使用 cargo。

cargo install pbj

命令

目前只有一个命令:generate

generate

生成项目。别名 g

该命令

  • 通过名称解析和加载一个 templatepbj 在已知的一组 配置文件夹 中寻找名为 <<template>>.toml 的文件

  • 添加生产依赖项

  • 添加开发依赖项(如果您的语言/工具支持)

  • 运行指定的任何后生成命令

  • 根据模板声明生成源代码、测试和配置文件

示例

  • pbj 生成-t python项目名称

  • pbj g 项目名称 — 使用配置文件

我待办事项列表中最重要的是命令用于生成模板骨架和初始化带有默认值的配置的命令。

配置

pbj 在以下位置寻找 config.toml 文件(用于设置默认参数)和模板文件,按照以下顺序。找到的第一个为准。

配置目录取决于系统,由 dirs 包提供

模板在上述配置位置中的 templates 子目录中查找和加载。

config.toml

一个简单的配置文件,指定默认参数。默认值和示例可以在这里找到。

[模板]

要使用的默认模板。为 -t--template 参数提供 generate 命令的默认值。

[前缀分隔符]

用于前缀分隔的字符串。如果通过 -p--prefix 参数向项目提供前缀,则使用。默认为 _

示例
pbj g -p 1234 many_moons 将生成一个项目目录 1234_many_moons,其中 $PROJECT_NAME 设置为 many_moons

[变体]

要使用的文件变体。为 -v--variant 参数提供 generate 命令的默认值。

模板

自定义模板

可以从github templates 文件夹 中复制/粘贴起始模板,或者可以手动使用以下格式编写一个。

部分

[语言]

二进制
用于“运行”语言的可执行二进制文件。已测试其存在并在路径上。

版本
所需的语言版本。未使用。

名称
模板的友好名称。未使用。

[项目]

依赖项
运行时“生产”依赖项的列表。

开发依赖项
运行时“开发”依赖项的列表。

[项目工具]

二进制
用于初始化、依赖管理和运行测试的项目工具。

[项目工具命令]

初始化
使用 project.tool 初始化新项目并使用 project.tool.binary 的命令。

添加依赖项
添加“生产”依赖项的命令和参数。

添加开发依赖项
添加“开发”依赖项的命令和参数。

运行测试
运行单元测试的命令。

[[项目.后处理.命令]]

在项目初始化后执行的一组任意命令。基本上允许你做任何你想做的事情。

命令
要运行的命令。

args
传递给上述命令的参数列表。

[代码目录]

源代码
[[code.source]] 文件生成的源代码文件放置在(相对于根)项目目录中。

测试
[[code.test]] 文件生成的源代码文件放置在(相对于根)项目目录中。

[[代码.源代码]]

source 目录下相对于 [code.directories] 表格生成的文件。遵循 文件格式

[[代码.测试]]

source 目录下相对于 [code.directories] 表格生成的文件。遵循 文件格式

[[配置]]

相对于根目录生成的文件。遵循 文件格式

文件格式

文件
生成文件的路径(可以包含文件夹)。路径是相对的。路径开始的目录不同。

变体
用于生成模板变体的可选密钥。如果指定在命令行上,将覆盖具有相同 file 路径的文件。未指定变体的文件具有隐含的 default 变体。

内容
要写入文件的文本内容

变量

对 TOML 进行预处理,进行基本的变量替换。

$项目名称

任何使用此特殊变量的情况都将替换为命令行上提供的项目名称。

随机位

Leetcode 支持

构建这个工具的动机之一是希望能够本地处理算法/面试问题。

打算使用前缀参数和 leet 文件变体来实现这一点。

示例
pbj generate -p 1293 -t python shortest_path 生成一个与问题编号相关联的项目,但生成的代码中不包括前缀。文件本身符合 leetcode 格式。

起源

我需要做很多小项目(主要是编码 kata、leetcode 等),并且忘记了如何从头开始设置带有良好配置、健康布局和立即可运行单元测试的类型脚本项目。

  • 好的配置

  • 健康的布局

  • 立即可运行的单元测试

那里有其他项目生成器,如 yeoman、基于 npm 的创建脚本,但我不喜欢它们的透明度。我想要一个完全声明性的、可读的项目声明。

这最初是一个超级基本的 bash 脚本,但我后来想使用 python,经过复制粘贴后决定进行一些更好的自动化。

依赖项

~2–12MB
~93K SLoC