一个非常简单的代码生成器。
agen的Python项目详细描述
一个非常简单的代码生成器。
- 自由软件:麻省理工学院许可证
- 文档:https://agen.readthedocs.com/en/。
功能
- 简单且非常简单的api
- 支持自定义Jinja Env
- 可以用作命令行工具
无模板
agen不提供任何模板。只是提供了一些功能, 使代码成为模板。如果您需要任何公共模板,请 使用很棒的开源工具, Cookiecutter。
为什么是agen?
agen是如此轻巧,可以完美地集成到您的 在几分钟内完成项目。
我喜欢Cookiecutter(它是 太酷了,太棒了),但是它的大部分功能都太重了 为了我。
安装
使用pip安装:
pip install agen
使用源代码安装:
clone https://github.com/yufeiminds/agen.git
cd agen
python setup.py install
快速入门指南
在agen中,使用jinja2作为 用于呈现的模板引擎,因此 jinja2模板将在 agen。
文件生成
fromagenimport(string_render,render,generate,generate_dir)# Render text from a templated stringstring_render('{{key}}',{'key':'value'})>'value'cattemplate.py>{{key}}# Render text from a template filerender('template.py',{'key':'value'})>'value'# Generate file from a template filegenerate('template.py','output.py',{'key':'value'})# Content of output.pyvalue
目录生成
如果我们有这样的目录:
directory ├── __init__.py └── {{key}}.py
调用generate_dir函数:
generate_dir('directory','mydir',{'key':'value'})
将生成
mydir ├── __init__.py └── value.py
每个纯文本文件都将由模板引擎呈现。上下文{'key': 'value'}也将自动呈现。
命令行工具
基本用法
agen还实现了一个非常简单的命令行工具,用于 很容易呈现本地模板,但它只能在*unix上使用 操作系统。
Usage: agen [OPTIONS] [NAMES]... Options: -o, --out PATH Output path or directory -s, --source PATH Source path or directory -c, --context PATH Path of context file --help Show this message and exit.
没有参数,agen将搜索本地模板目录,例如。 在*nix操作系统上,此目录通常位于:
$ agen -------------------------------------------- agen Library see -> /Users/yufeili/.agen/templates -------------------------------------------- directory repo single.txt
最简单的呼叫方式:
$ agen -s template_path -o ouput_path -c context.json
当然,.yaml也可以用作context文件。如果out 未提供选项,它将在屏幕上提示输入(默认为 当前目录)。
完整示例
您可以指定三种目录或文件作为source。
单个文件
$ agen -s single.txt -o output.txt -c context.json
目录
任何目录,如
directory ├── __init__.py └── {{key}}.py
两者都可以是source,它还支持使用模板变量 呈现输出文件名。
$ agen -s directory -o myapp -c context.json
此命令将创建名为myapp的目录,并处理 递归地将directory下的所有文件输出到myapp基 关于起源结构。
存储库
注意
agen不是作为命令行工具设计的,因此对于生成存储库,建议使用awesomeCookiecutter。
如果目录中有一个内部文件夹,并且该目录具有 agen.json或agen.yaml,将被判断为 Repo,
repo ├── README.md ├── agen.json └── {{name}} ├── __init__.py └── {{name}}.py
此工具的默认行为将被更改,假设 repo
$ agen -s repo -o output -c context.json
- 此命令将创建一个与inner同名的文件夹 目录到output目录,如果文件夹的名称是 模板字符串,它将被编译为标准字符串,然后创建 文件夹,其他行为与directory相同。
- 不需要context。如果没有提供,它将加载 agen.[json|yaml]文件,并提示用户输入。
示例
对于context{'key': 'value'},output是当前的 目录,当前值:
. └── value ├── __init__.py └── value.py
本地模板目录
使用选项参数NAMES,可以从本地模板获取文件路径 目录为source。以下两个调用在 *NIX系统:
$ agen -s ~/.agen/templates/single.txt $ agen single.txt
学分
- 作者:李宇飞yufeiminds@gmail.com
- 联系我:@yufeiminds(facebook)、@yufeiminds(新浪微博)
欢迎与我一起发展!
分叉此回购并开发它。