寻找独立的命令行代码生成器脚本

问题描述 投票:0回答:4

我正在寻找一个库或命令行脚本,它允许我创建可以从命令行生成的自定义模板。 ruby on Rails 脚手架生成器与我想要做的几乎相同。我什至更喜欢用 Ruby 编写它(但它不能需要 Rails,因为我可能不会在 Ruby 应用程序上使用它)。什么样的脚本已经可用?

code-generation template-engine
4个回答
9
投票

我也一直在寻找类似的东西——但没有找到我所希望的。我使用的两种方法都是可以接受的。但我还是希望能找到真正的东西。

  • 显而易见,但

    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 一段时间了——它是一个很棒的工具,简单但功能强大。


8
投票

试试这个:https://gomplate.hairyhenderson.ca 丰富的函数集和一个独立的二进制文件(用 Go 编写)


0
投票

对于简单的用例,您可以使用

envsubst
GNU 包
中的 gettext。 基本上,它从
stdin
读取任何(文本)文件,替换环境中所有出现的
$VARIABLE
${VARIABLE}
,并将结果写入
stdout
。多一点,少一点。

完整文档位于此处

优点

  • 它是一个小型二进制文件,不需要 python(或其他运行时)
  • 它非常快并且内存占用很小

缺点

  • 它就是这么做的。没有特殊的插值和函数(如循环、条件等)
  • 不支持特殊的
    bash
    之类的“参数扩展”

对于更高级的用例,我推荐

j2cli
,一个“独立Jinja2 模板引擎,您可以从
pip
安装,就像在 Python 中一样。代码可以在 here 找到(虽然看起来有点陈旧...),文档也在 there

优点

  • 这是具有所有花哨功能的 Jinja2!

缺点

  • 您需要完整的 Python 运行时来运行它,并需要 PIP 来安装它。
  • 在受限环境中,计算资源不可忽视。

0
投票

您可以使用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 %>
}
© www.soinside.com 2019 - 2024. All rights reserved.