用 Python 做了一个模版管理器,欢迎大家来试用

2017-03-12 21:58:27 +08:00
 yeyuexia

因为项目需要,要做些项目模版方便之后使用,本来想用 yeoman 的,最后想了想还是自己撸了个模版管理工具出来,给大家分享下。支持模版的添加,查看,删除和使用指定模板创建工程的方法,支持本地模板和远程 git 的模版。 项目地址在这儿: https://github.com/yeyuexia/abathur

安装

pip install abathur

使用

首先有一个模板项目目录结构类似

template/src
├── main
│   ├── java
│   │   └── com
│   │       └── abathur
│   │           └── {PROJECT_NAME}
│   │               └── {PROJECT_NAME_IN_CLASS}Application.java
│   │                   ├── domain
│   │                   │   ├── entity
│   │                   │   │   └── {PROJECT_NAME_IN_CLASS}.java
│   │                   │   ├── repository
│   │                   │   │   └── {PROJECT_NAME_IN_CLASS}Repository.java
│   │                   │   └── service
│   │                   │       └── {PROJECT_NAME_IN_CLASS}Service.java
│   │                   ├── facade
│   │                   │   ├── {PROJECT_NAME_IN_CLASS}DtoMapper.java
│   │                   │   └── {PROJECT_NAME_IN_CLASS}Facade.java
│   │                   ├── infrastructure
│   │                   │   └── persistence
│   │                   │       ├── {PROJECT_NAME_IN_CLASS}Po.java
│   │                   │       └── {PROJECT_NAME_IN_CLASS}Repository.java
│   │                   └── resource
│   │                      └── {PROJECT_NAME_IN_CLASS}Resource.java
│   └── resources
│       └── application.yml
└── test
    ├── java
    │   └── com
    │       └── abathur
    │           └── {PROJECT_NAME}
    │               └── resource
    │                   └── {PROJECT_NAME_IN_CLASS}ResourceTest.java
    └── resources

{}包裹的都是需要替换的关键字。其中会提供一个默认的关键字{PROJECT_NAME}默认替换为项目名称,也可以自己改它。

然后创建一个.abathur的文件放在模板项目的根目录,里面把项目里所有用到的关键字列出来

cat .abathur
PROJECT_NAME_IN_CLASS
TABLE_NAME

模板管理器每次创建项目的时候就回去读这些配置然后让你去 override 它们。

添加进模板管理器

abathur add alias ~/template

根据模板创建工程

abathur build -a name project_name

list 和 remove

abathur list
abathur remove alias

因为比较懒,目前只能用在 python3.6 以上的版本里。我在考虑要不要向下兼容 orz ,其实只用了 3.6 的 format 的 feature 。

总之 欢迎大家来试试,提些反馈意见 orz 。

2240 次点击
所在节点    分享创造
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/346923

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX