tera-cli 0.1.3 テンプレートエンジンがinlucdeでエラー
Rust製なので高速。だがinclude
するとエラーになって使えなかった。
成果物
情報源
概要
tera-cliはteraのコマンドツール版。teraはRust製のテンプレートエンジンで、jinja, Django template languageと類似した形式である。
tera-cliはjson, toml, yamlファイルを入力として受け取れる。
インストール
cargo install --git https://github.com/chevdor/tera-cli
ログ(10m 02s)
Updating git repository `https://github.com/chevdor/tera-cli` Installing tera-cli v0.1.3 (https://github.com/chevdor/tera-cli#5bf7c96d) Updating crates.io index Downloaded humansize v1.1.1 Downloaded bstr v0.2.16 Downloaded textwrap v0.12.1 Downloaded typenum v1.13.0 Downloaded globset v0.4.8 Downloaded proc-macro-error-attr v1.0.4 Downloaded proc-macro-error v1.0.4 Downloaded dtoa v0.4.8 Downloaded generic-array v0.12.4 Downloaded env_logger v0.8.4 Downloaded tera v1.12.1 Downloaded strsim v0.10.0 Downloaded ignore v0.4.18 Downloaded serde_yaml v0.8.17 Downloaded os_str_bytes v2.4.0 Downloaded clap_derive v3.0.0-beta.2 Downloaded clap v3.0.0-beta.2 Downloaded humantime v2.1.0 Downloaded 18 crates (924.0 KB) in 2.19s Compiling memchr v2.4.0 Compiling autocfg v1.0.1 Compiling libc v0.2.98 Compiling cfg-if v1.0.0 Compiling proc-macro2 v1.0.27 Compiling unicode-xid v0.2.2 Compiling syn v1.0.73 Compiling version_check v0.9.3 Compiling log v0.4.14 Compiling serde v1.0.126 Compiling regex-syntax v0.6.25 Compiling bitflags v1.2.1 Compiling ucd-trie v0.1.3 Compiling lazy_static v1.4.0 Compiling crossbeam-utils v0.8.5 Compiling maplit v1.0.2 Compiling same-file v1.0.6 Compiling unic-common v0.9.0 Compiling fnv v1.0.7 Compiling once_cell v1.8.0 Compiling ryu v1.0.5 Compiling unic-char-range v0.9.0 Compiling serde_json v1.0.64 Compiling unicode-segmentation v1.8.0 Compiling ppv-lite86 v0.2.10 Compiling termcolor v1.1.2 Compiling linked-hash-map v0.5.4 Compiling deunicode v0.4.3 Compiling itoa v0.4.7 Compiling unicode-width v0.1.8 Compiling hashbrown v0.11.2 Compiling vec_map v0.8.2 Compiling humansize v1.1.1 Compiling dtoa v0.4.8 Compiling strsim v0.10.0 Compiling humantime v2.1.0 Compiling percent-encoding v2.1.0 Compiling os_str_bytes v2.4.0 Compiling num-traits v0.2.14 Compiling num-integer v0.1.44 Compiling indexmap v1.7.0 Compiling proc-macro-error-attr v1.0.4 Compiling proc-macro-error v1.0.4 Compiling pest v2.1.3 Compiling walkdir v2.3.2 Compiling unic-ucd-version v0.9.0 Compiling thread_local v1.1.3 Compiling unic-char-property v0.9.0 Compiling heck v0.3.3 Compiling yaml-rust v0.4.5 Compiling slug v0.1.4 Compiling textwrap v0.12.1 Compiling unic-ucd-segment v0.9.0 Compiling pest_meta v2.1.3 Compiling aho-corasick v0.7.18 Compiling bstr v0.2.16 Compiling getrandom v0.2.3 Compiling atty v0.2.14 Compiling quote v1.0.9 Compiling unic-segment v0.9.0 Compiling regex v1.5.4 Compiling rand_core v0.6.3 Compiling toml v0.5.8 Compiling serde_yaml v0.8.17 Compiling rand_chacha v0.3.1 Compiling globset v0.4.8 Compiling env_logger v0.8.4 Compiling parse-zoneinfo v0.3.0 Compiling pest_generator v2.1.3 Compiling rand v0.8.4 Compiling chrono v0.4.19 Compiling ignore v0.4.18 Compiling chrono-tz v0.5.3 Compiling pest_derive v2.1.0 Compiling clap_derive v3.0.0-beta.2 Compiling globwalk v0.8.1 Compiling clap v3.0.0-beta.2 Compiling tera v1.12.1 Compiling tera-cli v0.1.3 (/home/pi/.cargo/git/checkouts/tera-cli-5f553edc1c5f46c3/5bf7c96) Finished release [optimized] target(s) in 10m 02s Installing /home/pi/.cargo/bin/tera Installed package `tera-cli v0.1.3 (https://github.com/chevdor/tera-cli#5bf7c96d)` (executable `tera`)
ヘルプ
tera --help
ヘルプ
tera-cli 0.1.3 chevdor <chevdor@gmail.com> Command line utility for the tera templating engine. You need to provide a template using the tera syntax as well as some data (various format are supported) USAGE: tera [FLAGS] [OPTIONS] --template <template> [context] ARGS: <context> Location of the context data. This file can be of the following type: json | toml | yaml. If you prefer to pass the data as stdin, use `--stdin` FLAGS: -a, --escape Auto-escape rendered content. This is useful for HTML output -e, --env If true, the current ENV will be appended to the data under the --env-key key --env-first By default, the context is made of the data you pass and the ENV is applied afterwards. Setting this option will apply the ENV first. This is interesting if you prefer your data to override the ENV --env-only If you want to solely use the ENV as context, you may pass this option. This will prevent an error about no context being passed to be raised --fail-on-collision if you prefer your data to override the ENV -h, --help Prints help information -s, --stdin The context data can be passed using stdin -V, --version Prints version information OPTIONS: --env-key <env-key> By default, if --env is set, the environment variables will be attached at the root of the context. This is convenient but may end up conflicting with your data. To prevent collisions, you can provide a custom key with this option -o, --out <out> Optional output file. If not passed, using stdout -t, --template <template> Location of the template
使ってみる
0
テンプレートファイルを用意する。
README.tpl
# {{ title }} {{ summary }}
データファイルを用意する。
README.tpl.toml
title = 'タイトルだよ' summary = '要約ですわ。'
テキストを出力する。
tera -o README.md -t README.tpl README.tpl.toml
README.md
# タイトルだよ
要約ですわ。
OK!
1 include
エラーになった。
README.tpl
# {{ title }} {{ summary }} {% include 'README_feature.tpl' %}
README_feature.tpl
# feature * 特徴
あとは先述と同じ。
テキストを出力する。
tera -o README.md -t README.tpl README.tpl.toml
エラーになった。なぜかテンプレートファイルが見つからないと怒られる。
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error { kind: Msg("Failed to render '__tera_one_off'"), source: Some(Error { kind: TemplateNotFound("[README_feature.tpl]"), source: None }) }', src/main.rs:32:67
エラーメッセージをみると"[README_feature.tpl]"
とある。まさかファイル名に[]
がついていないとダメ? と思ってその名前のファイルも用意してみたがやはり同様のエラーだった。これ以上はソースコードを読まねばわからないだろう。さようなら。
所感
include
でエラーになるのはバグだと思う。ほかのツールを探そう。
対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
- tera-cli 0.1.3
$ uname -a Linux raspberrypi 5.4.83-v7l+ #1379 SMP Mon Dec 14 13:11:54 GMT 2020 armv7l GNU/Linux