#generator #bullet #template #cargo #configurable #boilerplate #generate

app cargo-bullet

这是一个可配置的项目生成器

11 个版本

0.2.6 2019 年 12 月 3 日
0.2.5 2019 年 11 月 30 日
0.2.3 2019 年 4 月 24 日
0.2.1 2019 年 3 月 8 日
0.1.3 2019 年 2 月 22 日

#2735命令行工具

34 每月下载量

Apache-2.0/MIT

11MB
768

包含 (DOS 可执行文件, 5.5MB) distribute/windows/cargo-bullet.exe,(DOS 可执行文件, 5.5MB) cargo-bullet.exe,(Mach-o 可执行文件, 5MB) distribute/darwin/0.2.5/cargo-bullet,(Mach-o 可执行文件, 5MB) distribute/darwin/0.2.5/luban

crates.io LICENSE Build Status

子弹

子弹是一个项目样板生成器

安装

linux/unix/mac

  1. 安装 rust: curl https://sh.rustup.rs -sSf | sh
  2. 安装 bullet: cargo install cargo-bullet
  3. 检查版本: cargo bullet --version

已知问题

OS 问题 解决
centos 找不到 OpenSSL 目录 yum install openssl-devel
ubuntu 链接器 cc 未找到 sudo apt-get install build-essential
ubuntu 找不到 OpenSSL 目录 sudo apt install libssl-dev & sudo apt instll pkg-config

windows

  1. 安装 rust: 按照以下 rust-lang
  2. 安装 bullet: cargo install cargo-bullet
  3. 检查版本: cargo bullet --version
  • 请安装 visual studio 以获取 msvc 编译器

从源安装

  1. 安装 rust
  2. git clone https://github.com/thegenius/bullet.git
  3. cd bullet
  4. cargo build --release
  5. ./target/release/bullet.exe --version

用法

cargo bullet --config=<config_file> --template=<template_dir> --out=<out_dir>

配置文件示例: build.toml

group = "example"
project = "test"
[ext]
my_content = "This is my content"

项目结构示例: templates/structure/structure.toml

project_structure = [
    {item_path="{{ context.group }}.{{context.project }}",  item_file = "hello.txt", item_tmpl="hello.txt.tmpl", item_type="static"}
]

项目模板示例: templates/template/hello.txt.tmpl

hello {{ context.project }} {{ context.ext.my_content }}

生成项目

cargo bullet -c build.toml -t templates -o output

idea

在开发项目时,我们总是要编写许多样板代码、配置等,因此可以节省您的时间。

  1. 创建项目模板。
  2. 使用 yaml 或 json 或 toml 配置项目。
  3. 生成项目

对于模板开发者

模板结构

root |-- structure/
     |-- |-- structure.toml 
     |-- template/
     |-- |-- hello.tmpl
     |-- |-- world.tmpl
     |-- bullet.toml

结构文件

  1. project_structure 是根元素
  2. 子元素必须具有 4 个字段:item_path、item_file、item_tmpl、item_type
  3. item_path 是您想要生成的文件路径
  4. item_file 是您想要生成的文件名
  5. item_tmpl 是位于模板目录中的模板文件
  6. item_type 目前支持 "static" 和 "dynamic"

静态结构

您可以使用上下文作为引用来访问bullet.toml属性
例如

item_path = "{{context.project}}.hello"

动态结构

您可以使用上下文作为引用来访问bullet.toml属性,
并且您可以使用资源作为引用来访问bullet.toml的资源项,例如

item_path = "{{context.project}}.hello" item_file = "{{resource.name_info.default_name}}"

对所有用户

bullet.toml示例

group = "example"
project = "test"

[ext]
content = "ext content"

[resources.basic_info]
name_info = {default_name = "hello"}
type_info = {}
ext = {}
fields = [
    {name_info = {default_name = "id", camel_name="id"},  type_info= {java="Long"}},
]

bullet.toml根元素

属性 必须 类型
字符串
项目 字符串
扩展名 map<string, string>
资源 资源元素

资源元素

属性 必须 类型
name_info name元素
type_info map<string, string>
扩展名 map<string, string>
字段 字段元素

字段元素

属性 必须 类型
name_info name元素
type_info map<string, string>
扩展名 map<string, string>

name元素

属性 必须 类型
default_name 字符串
snake_name 字符串
hyphen_name 字符串
upper_camel_name 字符串
lower_camel_name 字符串

支持的模板

Java Spring Gradle

cargo bullet install --name=bullet-spring-java
cargo bullet create  --name=bullet-spring-java
cargo bullet build   --name=bullet-spring-java --output=out 

Java Spring Maven

cargo bullet install --name=bullet-spring-java-maven
cargo bullet create  --name=bullet-spring-java-maven
cargo bullet build   --name=bullet-spring-java-maven --output=out

MySQL累加器

cargo bullet install --name=bullet-sql-accumulator
cargo bullet create  --name=bullet-sql-accumulator
cargo bullet build   --name=bullet-sql-accumulator --output=out 

依赖

~20–31MB
~559K SLoC