我正在寻找一个库或命令行脚本,它允许我创建可以从命令行生成的自定义模板。 ruby on Rails 脚手架生成器与我想要做的几乎相同。我什至更喜欢用 Ruby 编写它(但它不能需要 Rails,因为我可能不会在 Ruby 应用程序上使用它)。什么样的脚本已经可用?
我也一直在寻找类似的东西——但没有找到我所希望的。我使用的两种方法都是可以接受的。但我还是希望能找到真正的东西。
显而易见,但
sed
适用于简单用例对于中等复杂度的用例,如果您可以假设计算机上存在某个版本的 Python,则标准库中的
string.Template
效果很好。您可以编写一个使用此函数的小型 Python 脚本,并且由于它是 Python,因此通常由模板引擎提供的测试/循环等可以很容易地在 Python 代码中处理。我刚刚发现了 Mustache(参见 http://mustache.github.io/)。看起来像是一个可靠的、专门构建的解决方案。从其网站来看,Mustache 已在 Ruby、JavaScript、Python、Erlang、PHP、Perl、Objective-C、Java、.NET、Android、C++、Go、Lua、ActionScript、ColdFusion、Scala、Clojure、Fantom、CoffeeScript、 D、node.js。如果这些选择适合您的环境,您可以轻松编写或编译 Mustache 支持以使其成为命令行实用程序。
2013 年 10 月 15 日更新
现在我已经使用 Mustache 一段时间了——它是一个很棒的工具,简单但功能强大。
试试这个:https://gomplate.hairyhenderson.ca 丰富的函数集和一个独立的二进制文件(用 Go 编写)
对于简单的用例,您可以使用
envsubst
GNU 包中的
gettext
。
基本上,它从 stdin
读取任何(文本)文件,替换环境中所有出现的 $VARIABLE
或 ${VARIABLE}
,并将结果写入 stdout
。多一点,少一点。
完整文档位于此处。
优点:
缺点:
bash
之类的“参数扩展”对于更高级的用例,我推荐
j2cli
,一个“独立”Jinja2 模板引擎,您可以从 pip
安装,就像在 Python 中一样。代码可以在 here 找到(虽然看起来有点陈旧...),文档也在 there。
优点:
缺点:
您可以使用ESH——一个基于shell的简单模板引擎。它由 POSIX shell 和 awk 编写~290 LoC。
项目自述文件中的示例:
http {
access_log <%= $logs_dir/access.log %> main;
resolver <%= $(sed -En 's/^nameserver ([^#]+)/\1/p' /etc/resolv.conf) %>;
<% if nginx -V 2>&1 | grep -q lua-nginx-module; then -%>
lua_package_path '<%= $(pkg-config --variable=INSTALL_LMOD lua) %>/?.lua';
<% fi -%>
<%+ ./http-common.esh %>
<%# The rest of the config is omitted %>
}