13个版本

0.4.4 2021年5月1日
0.4.0 2021年3月11日
0.2.10 2020年11月19日
0.2.7 2020年7月15日

#288 in 模板引擎

每月44次下载

MIT 或 Apache-2.0

71KB
1K SLoC

guidon-cli

guidon-cli 是使用 guidon 库渲染项目模板的工具。
它的可执行文件名为 guic(类似于 guidon-cli...)。

功能

  • 命令行工具
  • 使用 Handlebars 模板语法
  • 渲染模板化的文件名或文件夹名
  • 源可以是本地文件夹或 Git 仓库
    • 对于 Git 仓库,可以使用特定的修订版本
  • 目标是文件夹

用法

$ guic --help
Usage: guic [OPTIONS]

Apply template to project structures


Optional arguments:
 -h, --help     help
 -v, --verbose  verbosity
 -q, --quiet    quiet mode

Available commands:
 tplt   Templatize the given data
 crypt  Encrypt / Decrypt
 $ guic tptl -h
 Usage: guic tplt [OPTIONS]
 
 Positional arguments:
  from_path              Path or git repo of the template
  to_path                Output path for the target

 Optional arguments:
  -h, --help             This help message
  -g, --git-source       Required if template is hosted in a git repo
  -r, --rev REV          Revision to use
  -k, --unsecure         True to ignore certificate validation
  -a, --auto-proxy       If set to true, git tries to detect proxy configuration
  -m, --mode MODE        Render mode (lax, strict or strict_ask)
  -i, --interactive      Review variables before rendering template
  -t, --custom-tplt CUSTOM-TPLT
                         Provide a template file. If not provided, taken from given from_path.
 $ guic -h crypt
 Usage: guic crypt [OPTIONS]

 Positional arguments:
  data           The data to encrypt/decrypt

 Optional arguments:
  -h, --help     This help message
  -x, --decrypt  set to true to decrypt given data. If false, data encryption
  -k, --key KEY  The key to use. If not provided, the key will be read from GUIDON_KEY env var

从本地文件夹应用

$ guic tplt /path/to/template/folder /path/to/target

模板文件预期在文件夹中

folder
|- template.toml
|- template
|    | - file1.hbs
     | - file2.hbs

从模板文件应用

$ guic tplt /path/to/template_file.toml /path/to/target

结构预期如下

folder
|- template_file.toml
|- file1.hbs
|- file2.hbs

使用自定义模板应用

guic tplt -t tplt_file.toml path_to/template_dir /path/to/target

给定结构下应用

|
|- tplt_file.toml
|- path_to
|    |- template_dir
     |    |- file1.hbs
          |- file2.hbs

从 Git 仓库应用

简单用法案例

如果使用 Git URL,ssh 密钥必须在 ssh-agent 实例中存在。

# With a https url
$ guic tplt -g https://url.to.my/git/repo /path/to/target

# With a git/ssh url
$guic tplt -g [email protected]:git/repo /path/to/target

私有仓库

使用自签名证书和访问令牌。

$ guic tplt -g -k  https://:[email protected]/git/repo /path/to/target

使用用户密码。您应提供编码后的用户名和密码

$guic tplt -g https://user:[email protected]/git/repo /path/to/target

如果 ssh-agent 正在运行并且可以提供正确的密钥,您可以调用

$guic tplt -g [email protected]:git/rep path/to/target

模板

基本模板结构如下

a_folder/                   parent folder
  |- template.toml          configuration file (key / values)
  |- template/              folder containing templates files
    | - file1.txt.hbs       a template file (hbs extension)
    | - file{{key1}}        the {{key1}} part will be replaced
    | - dir1                
    |   |- file2.txt.hbs    a template file
    |   |- file3.txt        this file will be copied to destination
    | - {{dirkey}}          this folder will be renamed
    |   |- {{filekey}}.hbs  this file will be renamed and rendered

以及一个 file1.txt.hbs 文件如下

This is a {{key2}}, but it could have been a {{key3}}.

以及一个 template.toml 文件如下

[variables]
key1 = ".bak"
key2 = "plop"
key3 = "toto"
dirkey = "THE/FOLDER"
filekey = "my_file.ini"

输出结构将是

target_folder/
    |- file1.txt
    |- file.bak
    |- dir1/
    |   |- file2.txt
    |   |- file3.txt
    |- THE/
        |- FOLDER/
            |- my_file.ini

并且 file1.txt 的内容将是

This is a plop, but it could have been a toto.

提供了一些助手,请参阅 readme

渲染模式

如果 lax,缺失的值将默认为空字符串,如果 strict,则对于缺失的值将引发错误,如果 strict_ask,则用户将被提示输入缺失的值。

安装

通过 Cargo

$ cargo install --force guidon-cli

预构建的二进制文件

预构建的二进制文件可在此处获取

依赖项

~5–14MB
~198K SLoC