pmfp
- version: 4.1.10
- status: dev
- author: hsz
- email: hsz1273327@gmail.com
Description
一个用于管理项目及相关开发的工具
keywords: tool,project_manager
特点
- 可以独立使用功能模块
- 根据模板快速构建项目
- 简单的编译和打包指令
- 快速测试
- 文档维护,支持github page
注意
-
要支持grpc或者protobuf需要安装相关依赖
- 通用的编译工具:protoc
- python:
grpcio
,grpcio-tools
- node:
@grpc/proto-loader
,async
,google-protobuf
,grpc
,lodash
,minimist
Install
python -m pip install pmfp
使用
pmfp现在被设计为两个部分:
-
项目管理部分
用于快速根据托管在git仓库上的模板仓库项目构造项目 -
调用功能部分
用于为不同的项目提供特定功能
项目管理
项目管理使用的子命令为project
,其整体设计思路是这样:
- 借助git仓库来保存组件模板.
- 每个组件模板使用jinja2作为模板引擎,允许使用其模板语法
- 用于保存组件模板的git仓库称为资源包(source pack)
- 资源包需要使用一个文件来声明其中注册的组件和默认行为,默认这个文件为资源包根目录下的
.pmfp_template.json
文件.其具体schema可以查看项目的protocol.py
文件中的TEMPLATE_INFO_SCHEMA
对象定义 - 如果资源包声明文件中
template_type
不为components
则说明这是一个模板资源包,我们就可以根据其作为模板构造项目. - 资源包中每个组件都有一个
source
字段,这个字段用于声明组件的位置,如果其中有//
则说明它是引用的另一个资源项目的组件 - 根据模板包构造项目只要指定一个资源包路径即可,其形式为
[[{host}::]{repo_namespace}::]{repo_name}[@{tag}]
- 如果是已有项目要添加组件,则可以使用
[[{host}::]{repo_namespace}::]{repo_name}[@{tag}]//{component_path_str}
- 默认的host为
github.com
,默认的repo_namespace为Project-Manager-With-Git
,默认的tag为latest
,如果tag为latest它会拉取master分支的head.默认的资源仓库可以通过修改~/.pmfprc/config.json
来修改,
另外我们还可以使用cache
子命令管理资源包缓存
资源仓库类型
本项目将所有资源仓库类型分为如下几种:
-
socket
,专指基于网络的通讯程序,包括http服务,websocket客户端与服务,各种rpc客户端与服务,以及zeromq,webrtc等 -
GUI
,专指图形界面 -
task
专指主动执行的任务,比如一般脚本,定时任务 -
watcher
监听器,被动监听事件的任务,比如监听文件系统的任务,监听消息中间件的任务 -
module
模块,必须被其他程序调用的程序 -
components
组件集合,本身并不能执行 -
doc
文档型组件
资源仓库版本标签
资源仓库的分支和tag名都可以作为版本标签,但有两个特殊标签会进行更新操作,其他标签一旦下载到本地就不会更新了.因此构造资源仓库时建议使用git的tag维护稳定版本模板.
两个特殊标签为:
-
latest
会拉取master或者main分支.这个标签应该保证为最新的可用版本 -
dev
会拉取dev分支,这个标签意为开发版本,并不需要保证是可用版本
项目语言及对应的环境
本项目目前之前如下语言和执行环境组合:
-
language为
py
- env为
venv
,即python的标准库venv生成的c python虚拟环境 - env为
conda
,即anaconda/miniconda生成的c python虚拟环境 - env为
pypy
,即python的标准库venv生成的pypy虚拟环境
- env为
-
language为
js
- env为
node
,即以node为执行环境的javascript的babel标准环境 - env为
webpack
,即以浏览器为执行环境,使用webpack编译项目的javascript的babel标准环境
- env为
-
language为
cython
- env为
venv
,即python的标准库venv生成的c python虚拟环境 - env为
conda
,即anaconda/miniconda生成的c python虚拟环境
- env为
-
language为
go
- env为
gomod
,即golang的gomod模式管理项目
- env为
-
language为
C
- env为
cmake
,即使用cmake作为c语言的项目管理工具
- env为
-
language为
CXX
- env为
cmake
,即使用cmake作为c语言的项目管理工具
- env为
-
language为
md
- env为
http
,即使用markdown作为目标语言托管到http服务器上的纯文档环境
- env为
直接调用功能
支持直接调用功能的子命令包括:
-
build
打包项目到可分发状态. -
doc
快速构造项目的文档 -
docker image
快速构造docker镜像 -
docker compose
快速构造docker部署配置 -
env
快速构建项目的独立执行环境 -
grpc
快速构造了grpc的客户端和服务端 -
http
用于构造静态http服务和构造http请求和压测 -
proto
用于快速构建和编译protobuf文件 -
schema
用于校验jsonschema
-
test
用于对项目进行测试 -
requires
用于管理依赖
build
打包项目到可分发状态
这条命令的含义为--打包项目到可以分发的状态.不同编程语言可以打包到的状态并不相同:
-
golang:
-
exec
可执行文件 -
alib
静态库 -
dlib
动态库(linux专用) -
zip
源码压缩归档
-
-
python:
-
exec
,可执行的.pyz
文件 -
zip
,wheel归档
-